1 架构
1.1hibernate架构图
如上Hibernate架构图所示:在数据访问层,通过调用JPA提供的API或者Hibernate提供的原生API使用Hibernate框架功能。Hibernate底层封装了JDBC,在Hibernate底层和关系型数据库进行交互。
1.2 JPA和Hibernate主要接口和类图
-
SessionFactory (org.hibernate.SessionFactory)
SessionFactory:应用程序域模型到数据库映射的一个线程安全(且不可变)表示。充当org.hibernate.session的实例。EntityManagerFactory与JPA中的SessionFactory是等价的。基本上,这两者聚合到同一个SessionFactory实现中。
创建一个SessionFactory非常昂贵。因此,对于任何给定的数据库,应用程序应该只有一个关联的SessionFactory。SessionFactory维护Hibernate所有会话(如二级缓存、连接池、事务系统集成等)使用的服务。 -
Session (org.hibernate.Session)
Session:一个单线程、短生命周期的对象。在JPA命名法中,Session由EntityManager表示。
在底层,Hibernate Session封装了一个JDBC java.sql.Connection,并充当org.hibernate.Transaction的事务工厂。它维护应用程序域模型的一般“可重复读取”持久化上下文(第一级缓存)。 -
Transaction (org.hibernate.Transaction)
Transaction:应用程序用来划分单个物理事务边界的单线程、短期存在的对象。EntityTransaction,将应用程序与正在使用的底层事务系统(JDBC或JTA)隔离开来。
Hibernate是JPA的一种实现。