说到hibernate,英文意思:冬眠。给我印象最深的是孙文琴老师的那本hibernate深入详解分页上的那句话"let you java object hibernate in the relation database"。其实后边学完了再回头看这句话的时候就发现其实这句话说的很形象,它深刻的反映了hibernate在软件开发中的重要作用:ORM(object relation mapping 对象关系映射),那么要学习hibernate首先需要了解的就是ORM。
所谓ORM的解释,可以从维基百科中查到:
对象关系映射(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程式设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。如今已有很多免费和收费的ORM产品,而有些程序员更倾向于创建自己的的ORM工具。
面向对象是从软件工程基本原则(如耦合、聚合、封装)的基础上发展起来的,而关系数据库则是从数学理论发展而来的,两套理论存在显著的区别。为了解决这个不匹配的现象,对象关系映射技术应运而生。
简单的说:ORM相当于中继数据。具体到产品上,例如下边的ADO.NET Entity Framework。DLINQ中实体类的属性[Table]就算是一种中继数据。
对象关系映射成功运用在不同的面向对象持久层产品中,如:Torque,OJB,Hibernate,TopLink,Castor JDO,TJDO,Active Record,NHibernate,ADO.NET Entity Framework 等。
以上是维基百科中解释。所的很官僚,就是说的我们大家一般的人不太能理解。我个人的理解就是:对我们这些对JDBC常用操作非常厌倦的人来了个封装,然后给我们各种常用的接口,而且让我们感觉不到我们在操纵数据库,而只是在调人家给的接口,这无形中让我们感觉到很舒服,很惬意。
hibernate同样是ORM工具,那么它给我们提供了那些接口呢?让我列举几个:
Session、负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。)。
SessionFactory、负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式
Transaction、 负责事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务处理代码
Query、Query和Criteria接口负责执行各种数据库查询。它可以使用HQL语言或SQL语句两种表达方式
Configuration、负责配置并启动Hibernate,创建SessionFactory对象。