概述
Hibernate是一个开源代码的对象关系映射(ORM)框架,是基于Java的持久化中间件,它对JDBC进行轻量级的对象封装。
它不仅提供了从Java类到数据表之间的映射,也提供了查询和事务机制。
相对于使用JDBC和SQL操作数据库,Hibernate大大减少了操作数据库的工作量。
作用
作为持久化的中间件,Hibernate采用ORM映射机制,实现Java对象和关系数据库之间的映射,把SQL语句传给数据库,并且把数据库返回的结果封装成对象。
内部封装了JDBC访问数据库的操作,向上层应用提供了面向对象的数据库访问API。从而使程序员使用面向对象的思维来操作数据库。
如图示:
两个重要概念
1)数据持久化
数据持久化就是把内存中的数据(对象)永久保存到数据库中,实际上数据“持久化”包括了与数据库相关的各种操作。比如,保存、更新、删除、查询和加载。
说一下“加载”:
根据特定对象OID,把一个对象从数据库中加载到内存中。为了在系统中能够找到所需的对象,需要为每一个对象分配一个唯一的标识号。关系型数据库中称之为主键,而在对象术语中则称为对象标识(Object identifier-OID)。
数据持久化负责封装数据的访问操作,为业务逻辑提供面向对象的数据操作接口。
在Hibernate框架中,提供了访问数据库的方法,在使用时候直接调用即可。
2)ORM
全称Object/Relation Mapping,即对象/关系映射,是一种数据持久化技术,其基本思想是把对象模型(如JavaBean对象)与关系数据库的表建立映射关系。
在JDBC中,我们要做的是使用SQL语句操作数据库中的表;
而在Hibernate中我们不再需要直接操作数据库,而是转化为了对JavaBean对象的操作,就可以实现数据的存储、查询、更改和删除等操作。
ORM中对象与数据库表的映射关系 | |
面向对象概念 | 面向关系表(结构)概念 |
类 | 数据表 |
对象 | 数据表中的行(记录) |
属性 | 数据表中的列(字段) |
Hibernate框架的结构体系
基于Hibernate的应用程序是通过配置文件(hibernate.properties或hibernate.cfg.xml)和映射文件(*.hbm.xml)把持久化对象(Persistence Object,PO)映射到数据库的数据表,然后通过操作持久化对象(PO),对数据库中的数据进行增删查改。
由图中可以看出,使用Hibernate的开发人员的主要任务就是编写Hibernate配置文件(对应图中hibernate.properties)、设计PO类及对象-关系映射文件(对应图中XML Mapping),然后利用HibernateAPI来操作数据库。
Hibernate的核心组件
Hibernate全面解决方案体系架构:
Hibernate组件层次架构:
这些组件按被使用的次序分为5层,上层可对下层进行调用和使用。
1)Hibernate配置文件:主要用来配置数据库连接参数。如数据库驱动程序、URL、用户名和密码等。
它有两种格式:hibernate.properties和hibernate.cfg.xml。两者配置内容基本相同,通常使用后者。
2)持久化对象(PO):可以是普通的JavaBean。
3)映射文件:用来把PO与数据库中的数据表映射起来,是Hibernate的核心文件。
4)Configuration类:用来读取Hibernate配置文件和映射文件,并创建SessionFactory对象。
5)SessionFactory接口:产生Session实例的工厂,是Hibernate的容器。
6)Session接口:用来操作PO,它有get()、save()、update()、delete()等方法,用来对PO进行加载、保存、更新及删除等操作。它是Hibernate的核心接口。
7)Transaction接口:用来管理Hibernate事务,主要的方法有commit()和rollback(),可从Session的beginTransaction()方法生成。
8)Query接口:对PO进行查询操作。它可以从Session的createQuery()方法生成。