我们理解和利用的JavaEE规范有JSP,Servlet,JSTL,JMS,JTA,JPA,EJB等等。
JAP是一个规范,与任何的ORM框架都不冲突,底层可以选择任意的ORM框架。
ORM框架:让程序能用面向工具的办法去操作数据库。各种措辞都有自己的ORM框架,。Java的ORM框架是最多的。
无论哪种Java的ORM框架,都会主动遵守JPA规范。
JPA示意图
Hibernate API和JPA API的比拟
persist.xml基本配置
利用JPA进行数据持久化的操作管理数据库连接的配置文件,不能用ORM框架本身供应的,如hibernate.cfg.xml,而是利用JPA规范定义的配置文件。该配置文件必须放在META-INF目录下,文件名必须是persistence.xml
程序中该当利用persistence,EntityManagerFactory,EntityManager,EntityTransaction等JPA的API。
须要导入JPA的jar包,位于hibernate/lib/jpa下。
查询操作
保存操作
数据库事务Hibernate是JDBC的轻量级封装,本身不具备管理事务的能力。
在事务管理层,hibernate将其委托给底层的jdbc或JTA以实现事务的管理和调度。
数据库事务特性事务是访问并可能操作各种数据项的一个数据库操作的序列。具有以下的特性:
原子性
同等性
隔离性
持久性
数据库采取日志来担保事务的原子性,同等性和持久性,采取锁机制来实现事务的隔离性。
数据库事务并发引发的问题事务的隔离性不完备,就会导致各种并发问题,这些问题紧张归纳为以下几类:
更新丢失(lost update)
脏读(dirty read)
不可重复读(non-repeatableread)
幻读(phantom read)
事务的隔离级别为了避免并发问题的涌现,一担保数据的完全性和同等性,必须实现事务的隔离性。
ANSI/IOS SQL92标准定义了一些数据库操作的隔离级别:
序列化级别
可重复读
读已提交
读未提交
隔离级别及其对应的可能涌现或不可能涌现的征象如下表
Hibrenate中的事务
对付不同的DBMS,详细运用的隔离级别可能不同。
可以在hibernate.properties或hibernate.cfg.xml文件中配置事务的隔离级别,在hibernate.propertiesp配置如下:
Hibernate.connection.isolation=4
1:读未提交
2:读已提交
4:可重复提交
8:序列化