Hibernate顾名思义冬眠的意思,相信它的创造者的用意在于用这个工具将数据库连接持久化层冬眠,关于Hibernate网上争论很多,有人说其为工具,有人说其为框架,我相信一个人有一个人理解问题的角度,只要处理问题的方法正确就可以了。Hibernate是采用ORM映射机制的持久层开发工具,它是JAVA应用和关系数据库之前的桥梁,负责JAVA对象和关系数据之间的映射。内部封装了JDBC访问数据库的操作,向上层应用提供了面向对象的数据库访问API,在JAVA应用中使用到Hibernate包含如下步骤。
1) 创建
Hibernate配置文件
2) 创建持久类
3) 创建对象-关系-映射文件
4) 通过
HibernateAPI编写访问数据库的代码
如果想了解
Hibernate或者是要学习它的人必须要首先了解两个比较重要的概念:
1) POJO:在Hibernate中理解为数据库表所对应的Domain Object,如果从子面上理解就是无格式普通JAVA对象,简单的理解就是一个不包含逻辑代码的值对象。从数据层面上看,POJO作为数据实体的对象化表现形式,也成为实体。
2) ORM:ORM可以理解成一种机制也可以理解成一种模式,对象-关系-映射,我个人觉得如果想理解它可以和MVC比较,模型-视图-控制。ORM是把对象和关系数据库映射到一起,而MVC是把视图和模型控制在一起。
创建
Hibernate的配置文件Hibernate从中读取和数据库连接的相关信息,这个配置文
件应该位于应用的
classpath中,主要有两种形式XML格式和.Properteis信息文件。
创建持久化类就是指需要被
Hibernate持久化到数据库中的类,持久化类通常都是模型中的实体类,符合JavaBean的规范,包含一些属性,以及与之对应的get、set方法。
Hibernate技术本质上是一个提供数据库服务的中间件。它的架构如下图所示:
此图显示了hibernate的工作原理,它是利用数据库以及其他一些配置文件如hibernate.properties,XML Mapping等来为应用程序提供数据持久服务的。
在项目中使用Hibernate框架,非常关键的一点就是要了解Hibernate的核心接口。Hibernate接口位于业务层和持久化层,如图1所示。
图1 Hibernate核心接口的层次架构关系
Hibernate的核心接口一共有5个,分别为:Session、SessionFactory、Transaction、Query和Configuration。这5个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。下面对这五的核心接口分别加以介绍。
·Session接口:Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。)。但需要注意的是Session对象是非线程 安全的。同时,Hibernate的session不同于JSP应用中的HttpSession。这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSesion对象称为用户session。
·SessionFactory接口:SessionFactroy接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。
·Configuration接口:Configuration接口负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。
·Transaction接口:Transaction接口负责事务相关的操作。它是可选的,可发人员也可以 设计编写自己的底层事务处理代码。
·Query和Criteria接口:Query和Criteria接口负责执行各种数据库查询。它可以使用HQL语言或SQL语句两种表达方式。