Hibernate是很早的一个框架,ORM框架,我也是04年左右接触Hibernage框架的,也算是个老用户了,最近想熟悉Hibernate,便又开始看看hibernate in action。经典书籍。呵呵
想从框架说起,所谓框架就是减轻开发者劳动强度,再通俗一点,对码农是个福音,呵呵,对一些共同的东西,和一些繁琐的礼节性的东西承保起来,交给框架去做,开发者只关心的自己业务,如何实现。
ORM,这个估计都很熟悉了,其实持久层的框架,对象关系映射。借书里解释,在Java应用中,从对象到关系数据库自动持久化,通过对象和关系映射关系。本质上说,数据从一种表现转换成另一种表现。
Hibernate是ORM的佼佼者,很多项目再用,我也用过很多,大家还是要对Hibernate的版本号,多关注一下,我被面试的时候,还被问过,我答曰不清楚,呵呵,我现在比较清楚了,4.0,3.0呵呵。
持久化数据,是任何应用程序必须得,当然存储地方基本上数据库。
要用好ORM,必须理解关系模型,和SQL,要会优化SQL。
要持久化数据,到数据库,我以前做法,就是封装到DAO中,在DAO里面实现SQL存取数据到数据库,或转换成对象供应上层应用使用。基本上是,把对象数据转换成SQL,再把SQL值转换成数据,我2000年左右开发就是这样的,那时候基本架构,JSP-SERVLET-SERVICE-DAO-DATABASE.那个时候基本上完成网站。
持久关系模型和面向对象域模型,之间如何转换。
两大模型五大不匹配:
粒度,多态,身份,关系和对象图导向。
如何解决上面的问题,也就是如何持久化
经历了很多尝试,DAO手工SQL费事费力,序列化存储不现实,EJB实现不理想,太繁琐,面向对象数据库还没有应用普及
ORM解决上述问题。
ORM要解决如下问题:
持久化对象长什么样
映射元数据定义
如何映射多态
对象身份和数据身份如何匹配
持久化逻辑对象如何交互业务领域对象,在运行时
持久化对象生命
如何提供排序,检索,聚合
如何更有效的通过对象检索
还有就是并发和事物处理,以及缓存。
ORM带来了很多好处,生成能力,性能,厂商独立性,维护程度高等。