Java企业软件教程系列
Hibernate专题
Hibernate符合Java习惯的关系数据库持久化。基于JDBC抽象,适合大多数系统,无需关心具体实现。Hibernate一词翻译成中文是“休眠”,那么是什么休眠呢?无疑是对象Object休眠到数据库,这里主语是对象,数据库只是休眠睡觉的地方。有人总以为有了关系数据库知识,就能用好Hibernate,这是认识上的误区;很多人总是先有数据表结构,然后使用Hibernate倒推类代码,这是使用上的误区。
hibernate使用应该是先建立对象,才有对象的永久保存,Hibernate解决了对象保存到数据表中的细节琐碎转换问题。只有真正掌握了OO面向对象知识,才能用好Hibernate,正如Hibernate中文“冬眠”,我们将对象保存到数据库的这个行为比喻成对象的冬眠。Struts + Spring + Hibernate 号称SSH框架是JavaEE经典开发组合。
(1) HIBernate启动:Session Factory 和配置Configuration等类是启动 Hibernate 的主要功能类。
SessionFactory sessionFactory = new Configuration().configure()
SessionFactory实例比较重或大,第一次创建后保存在容器的Application或Singleton, 如struts的HibernatePlugIn。
(2)配置对象映射方法:
将对象映射放入主配置Hibernate-cfg.xml 优点是集中化,但是大型项目无伸缩性。
配置对象映射在分离的XML文件中,每个对象一个配置文,然后在Hibernate-cfg.xml增加这些配置指向;或在Configuration 通过编程注册。在SessionFactory 创建时,通过程序注册。
(3)通过元注释。通过@Entity等直接在代码中注释。
虽然Hibernate自动解决了对象的存储问题,但是开发者需要熟悉对象和数据库两个方面的技术,这对于开发者素质要求比较高,著名对象大师甚至认为ORM等如同计算机领域的一场越南战争,疲惫而没有结束的希望。可见对象和数据库的阻抗
教程源码
Spring JPA Data + Hibernate + MySQL + Maven教程源码
Spring MVC + Hibernate + Maven: CRUD增删改查教程源码
社区文章
- Martin Fowler厌倦ORM了
- Hibernate等ORM使用之道
- 我的O/R MAPPING 方法小结
- 使用hibernate還是使用oracle預存
- 大家都在讨论Hibernate,难到他没有缺点???
- hibernate v.s. CMP
- 关于 Hibernate缓存的问题
相关参考