Hibernate 简介
Hibernate 是 Gavin King于2001年开始,作为替代使用 POJO 代替传统 EJB 作为持久化层的 ORM 解决方案。 受 hibarnate 影响,Java EE 5 规范抛弃了传统的 EJB,使用 JPA 实体,JPA实体完全可以当作 hibernate PO(Persistent Object,持久化对象)来使用;
Hibernate 提倡低侵入式的设计,完全采用普通的 Java Bean 对象(POJO)编程,不要求 PO 继承 hibernate 某个超类或接口;
ORM(Object/Relation Mapping):即对象/关系映射,ORM是一种规范,概括这这类映射框架的基本特征:完成面向对象编程语言到关系型数据库之间的映射;在实际的使用过程中,程序员可以以面向对象的方式操作持久化对象,而 ORM 框架则负责将其转化为相应的 SQL 操作;
以下是目前一些比较主流的 ORM 框架:
JPA:JPA 本身是 Java EE 的一种 ORM 规范,并不是 ORM 产品,JPA实体和 hibernate PO 十分相似,甚至可以直接作为 hibernate PO 使用。JPA 最大的优势在于它是官方标准,一个面向 JPA 编程的应用程序,可以在任意ORM框架自由切换;
Hibernate:Red Hat 的子项目,目前已经被选为 JBoss 服务器的 JPA 实现,其具有优秀的设计、优秀的性能和丰富的文档;
MyBatis:Apache 的子项目(早期版本名称为iBatis),这是一种偏向“SQL Mapping”的框架,因为其并不支持纯粹的面向对象操作,相对于 htbernate,它对于数据库的访问更加灵活,允许直接编写 SQL 语句;
TopLink:Oracle 公司的产品,现在作为 JPA 的官方实现,GlassFish 服务器的 JPA 实现就是 TopLink;
hibernate 官网:http://hibernate.org/ ,可以在那里查找相关产品的的文档,下载,源码等,本教程就是参考官方提供的文档总结的;
Hibernate 结构体系
Hibernate 架构有4层:Java应用层,hibernate框架层,映射 api 层、数据库层
Hibernate框架使用许多对象会话工厂,会话,事务等以及现有的 Java API(JDBC:Java数据库连接),JTA:Java事务API、JNDI:Java命名目录接口)。
1)SessionFactory:会话工厂
SessionFactory 是 ConnectionProvider 的会话和客户端工厂, 拥有数据的二级缓存(可选)。 org.hibernate.SessionFactory 接口提供了工厂方法来获取 Session 的对象。
2)TransactionFactory: 事务工厂
它是一个事务工厂,是一个可选项。提供工厂方法获取 Transaction 对象;
3)Session:会话
Session 对象提供应用程序和存储在数据库中的数据之间的接口。 它是一个短生命周期的对象并包装JDBC连接。 它是事务,查询和标准的工厂。 它拥有一级缓存(强制性)数据。 org.hibernate.Session接口提供插入,更新和删除对象的方法。 它还提供了事务,查询和标准的工厂方法。
4)Transaction:事务
Transaction 对象指定工作的原子单位,它是一个可选项。 org.hibernate.Transaction接口提供事务管理的方法。
5)ConnectionProvider:连接工厂
它是一个JDBC连接工厂。 它从DriverManager或DataSource抽象出来的应用程序。 它是一个可选项。
Hibernate 安装
要在项目中使用 Hibernate(一般应用或Web应用),只要在 http://hibernate.org/orm/downloads/ 中下载相应的 Hibernate 二进制版本,将下载解压后的 lib/required 目录下的 JAR 包导入到项目依赖中就可以;
如果是IDEA的开发环境,可以直接在【File->New->Project->Java Enterprise->勾选“Hibernate”】即可创建一个包含 Hibernate 相关所有 JAR 库的项目,如果该项目是使用同时使用其他框架 Web 项目,只需要同时勾选其他的框架选项,如 Struts2,Spring 即可,这些框架相关的 JAR 依赖包,IDEA会自动下载;