Hibernate培训教程
hibernate简史................................................................................................................... 3
标准方面................................................................................................................... 3 ORM(object relational mapping)................................................................................... 3 成功之道................................................................................................................... 3 何为hibernate............................................................................................................ 4 持久层设计 ...................................................................................................................... 4
持久层概念 ............................................................................................................... 4
ORM(object relational mapper)对象-关系型数据映射组件............................................. 4 设计模式................................................................................................................... 5 资源管理模式............................................................................................................ 5 解藕合设计 ............................................................................................................... 6 体系结构.......................................................................................................................... 6
概况.......................................................................................................................... 6 实例状态................................................................................................................... 8 O/R映射 .......................................................................................................................... 9
basic o/r mapping........................................................................................................ 9 集合类映射 ............................................................................................................. 10 关联关系映射.......................................................................................................... 10 组件映射................................................................................................................. 10 继承映射................................................................................................................. 10 核心接口........................................................................................................................ 10 分类........................................................................................................................ 10 详解.........................................................................................................................11 数据检索........................................................................................................................ 13
Hibernate Query Language (HQL) .............................................................................. 13 Criteria queries (QBC)............................................................................................... 13 Native SQL queries ................................................................................................... 13 开发............................................................................................................................... 13
基本配置................................................................................................................. 14 高级配置................................................................................................................. 15 hibernate最佳实践.......................................................................................................... 15 参考............................................................................................................................... 15
hibernate简史
hibernate是在JDBC之上提供一层薄薄的封装,在提供完全透明的持久化机制的同时又提供尽可能多的灵活性。相比之ibatis则是面向“语句映射”的层面,使用SQL作为查询语言。
标准方面
J2EE提供了两个持久化的手段:JDBC,它是J2SE中访问关系数据库系统的标准API,然而却以一种错误的编程模型来强制开发者用java代码来处理关系思想;另一个是实体Beans ,它是EJB中专门模型化持久化实体的组件,一是不能处理持久对象间的关系,二是使用了糟糕的查询语言,三是难于测试。
ORM(object relational mapping)
由于J2EE持久化标准对于处理对象与关系的尴尬,而且持久化问题的解决方案是由关系-对象映射(ORM)来解决的,它可以透明地持久化普通java对象(POJO)。因此,ORM框架悠然而生。
1990年,一些商业的ORM工具就出现了,比如TopLink。但由于其价格昂贵、结构复杂并且与Sun的实体bean标准相左,所以很少人会用。
2001年,JDO(java data object)在Java Community Progress(www.jcp.org)的规范中出现。因其试图建立一个完整的持久层框架,追求标准化陷入僵局;标准很不完善,存在重大缺陷,产品分裂, 也没有一个好的开源免费实现,也没有能够流行。
2001年末,hibernate第一个正式版本对外发布,赢得了开源社区的一片赞誉。 2003年6月8日,hibernate 2的发布,奠定了成功的基石。开始进入国内开发人员视野。
2003年末,hibernate获得了Jolt 2004大奖以及被jboss收购,确立了hibernate在java orm架构中的主导地位,ORM工业标准。
2005年3月,hibernate 3正式发布。
成功之道
? ? ? ? ?
快速发布,即时响应 全面的回归测式 追求卓越 避免过度设计 集权
? ? ? ? ?
文档 避免标准化
10分钟之内把Hibernate跑起来 开发人员的责任感
易用的、可更新的wiki网页
何为hibernate
创建一份XML“映射文档”,告诉Hibernate您希望能够保存在数据库中的类,以及它们如何关联到该数据库中的表和列,然后就可以要求它以对象的形式获取数据,或者把对象保存为数据。运行时,Hibernate读取映射文档,然后动态构建Java类,以便管理数据库与Java之间的转换。在Hibernate中有一个简单而直观的API,用于对数据库所表示的对象执行查询。要修改这些对象,(一般情况下)只需在程序中与它们进行交互,然后告诉Hibernate保存修改即可。类似地,创建新对象也很简单;只需以常规方式创建它们,然后告诉Hibernate有关它们的信息,这样就能在数据库中保存它们。
持久层设计
持久层概念
专注于实现持久化的一个相对独立的领域,可以通过一个简单的逻辑图表达。
ORM(object relational mapper)对象-关系型数据映射组件
优点:
? ? ? ?
减少乏味的代码 更加面向对象的设计 更好的性能 更好的移植性
缺点: ? ? ? ? ?
粒度问题granularity 子类型问题subtypes 同一性问题identity 关联问题associations 对象导航问题navigation
设计模式
? ? ? ?
工厂模式factory 代理模式proxy decorator模式 dynamic proxy模式
资源管理模式
A. DAO(data access object)模式
I.DAO模式的实现层次: