当前位置: 首页 > news >正文

hibernate第三天:O/R MAPPING常见框架

O/R MAPPING常见框架
常见的ORM框架有:Hibernate、iBATIS、TopLink、Castor JDO、Apache OJB等。

Java中ORM的原理: 其实,要实现JavaBean的属性到数据库表的字段的映射,任何ORM框架不外乎是读某个配置文件把JavaBean的属 性和数据库表的字段自动关联起来,
当从数据库Query时,自动把字段的值塞进JavaBean的对应属性里,
当做INSERT或UPDATE时,自动把 JavaBean的属性值绑定到SQL语句中。

- 1.hibernate
- 2.iBATIS
- 3.toplink
TopLink,是位居第一的Java对象关系可持续性体系结构,
原署WebGain公司的产品,后被Oracle收购,并重新包装为Oracle AS TopLink。 TOPLink为在关系数据库表中存储
Java 对象和企业 Java 组件 (EJB) 提供高度灵活和高效的机制。 TopLink
为开发人员提供极佳的性能和选择,可以与任何数据库、任何应用服务器、任何开发工具集和过程以及任何 J2EE 体系结构协同工作。
对象关系映射持久层解决方案

- 4.jdo
JDO(Java Data Object )是Java对象持久化的新的规范,也是一个用于存取某种数据仓库中的对象的标准化API。
JDO最早是由Sun召集众多的O/R Mapping开发团队集中起来共同提出的,首先是通过会议确定了JDO需要包括的内容,
然后正式提出一个Java规范请求(JSR-12),正式开始了JDO规范的制定。

- 5.OJB。
Apache ObJectRelationalBridge (OJB) is an Object/Relational mapping
tool that allows transparent persistence for Java Objects against
relational databases. It was released on April 6, 2005.[1] As of
January 16, 2011 Apache ObJectRelationalBridge has been retired.[2]


补充:O/R Mapping框架:Ibatis与Hibernate之间的区别
hibernate 是当前最流行的o/r mapping框架,它出身于sf.net,现在已经成为jboss的一部分了。
ibatis 是另外一种优秀的o/r mapping框架,目前属于apache的一个子项目了。
相对hibernate“o/r”而言,ibatis是一种“sql mapping”的orm实现。
hibernate对数据库结构提供了较为完整的封装,hibernate的o/r mapping实现了pojo 和数据库表之间的映射,以及sql 的自动生成和执行。
程序员往往只需定义好了pojo 到数据库表的映射关系,即可通过hibernate 提供的方法完成持久层操作。
程序员甚至不需要对sql 的熟练掌握, hibernate/ojb 会根据制定的存储逻辑,自动生成对应的sql 并调用jdbc 接口加以执行。
而ibatis 的着力点,则在于pojo 与sql之间的映射关系。
也就是说,ibatis并不会为程序员在运行期自动生成sql 执行。
具体的sql 需要程序员编写,然后通过映射配置文件,将sql所需的参数,以及返回的结果字段映射到指定pojo。
而对于具体的数据操作,hibernate会自动生成sql 语句,
而ibatis 则要求开发者编写具体的sql 语句。
相对hibernate而言,ibatis 以sql开发的工作量和数据库移植性上的让步,为系统设计提供了更大的自由空间。

相关文章:

  • hadoop on nitrous.io
  • java常见日志理解
  • cobbler使用入门(未完整,待修改)
  • Externalizable和Serializable序列化与关键字transient
  • nmon系统监控工具
  • oracle官方文档使用
  • FlashBuilder(FB/eclipse) 打开多个无效
  • python 读写文件时,r、rt、rb、r+的区别
  • 类什么时候被加载
  • 【异构计算】OpenCL矩阵转置
  • Lazy initialization holder class模式
  • 基于HTTP的WEB服务器端口映射
  • 静态常量(static final)在class文件里是如何的呢?
  • IOS管理文件和目录
  • WIN7实现多用户远程桌面
  • [译]如何构建服务器端web组件,为何要构建?
  • C++类的相互关联
  • gf框架之分页模块(五) - 自定义分页
  • Hibernate【inverse和cascade属性】知识要点
  • js写一个简单的选项卡
  • MQ框架的比较
  • React中的“虫洞”——Context
  • 安装python包到指定虚拟环境
  • 二维平面内的碰撞检测【一】
  • 如何在 Tornado 中实现 Middleware
  • 入手阿里云新服务器的部署NODE
  • 实现简单的正则表达式引擎
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • 字符串匹配基础上
  • #include
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • (1)(1.13) SiK无线电高级配置(五)
  • (arch)linux 转换文件编码格式
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (个人笔记质量不佳)SQL 左连接、右连接、内连接的区别
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • (一) springboot详细介绍
  • (转)C#调用WebService 基础
  • (转)Sql Server 保留几位小数的两种做法
  • .bat批处理(一):@echo off
  • .NET 将多个程序集合并成单一程序集的 4+3 种方法
  • .NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用?
  • .NET的数据绑定
  • .net利用SQLBulkCopy进行数据库之间的大批量数据传递
  • .Net面试题4
  • .net下简单快捷的数值高低位切换
  • .Net转Java自学之路—SpringMVC框架篇六(异常处理)
  • .vollhavhelp-V-XXXXXXXX勒索病毒的最新威胁:如何恢复您的数据?
  • [ 蓝桥杯Web真题 ]-Markdown 文档解析
  • [cocos creator]EditBox,editing-return事件,清空输入框
  • [Google Guava] 2.1-不可变集合
  • [Linux]进程间通信(system V共享内存 | system V信号量)