下图提供了Hibernate体系结构的高级视图:
最小的架构
“最小”架构使应用程序管理其自己的JDBC连接,并将这些连接提供给Hibernate; 此外,应用程序自行管理交易。 这种方法使用了最少的Hibernate API子集。
综合架构
Hibernate Basic API
这里是有关上图中描述的一些API对象的快速讨论。
SessionFactory(org.hibernate.SessionFactory)
单个数据库的线程安全,不变的已编译映射缓存。 org.hibernate.Session实例的工厂。 org.hibernate.connection.ConnectionProvider的客户端。 (可选)维护数据的第二级缓存,该数据可在流程或集群级别的事务之间重用。
会话(org.hibernate.Session)
单线程,短暂的对象,表示应用程序与持久性存储之间的对话。 包装JDBC java.sql.Connection。 org.hibernate.Transaction的工厂。 维护持久性应用程序的持久性对象和集合的一级缓存; 在导航对象图或按标识符查找对象时使用此缓存。
持久对象和集合
包含持久状态和业务功能的短寿命单线程对象。 这些可以是普通的JavaBeans / POJO。 它们仅与一个org.hibernate.Session相关联。 一旦org.hibernate.Session关闭,它们将被分离并可以在任何应用程序层中自由使用(例如,直接作为与表示之间的数据传输对象)。
瞬时和分离的对象和集合
当前未与org.hibernate.Session关联的持久化类的实例。 它们可能已被应用程序实例化但尚未持久化,或者它们可能已被封闭的org.hibernate.Session实例化。
交易(org.hibernate.Transaction)
(可选)应用程序用于指定原子工作单元的单线程短期对象。 它从底层的JDBC,JTA或CORBA事务中抽象应用程序。 在某些情况下,一个org.hibernate.Session可能跨越多个org.hibernate.Transactions。 但是,使用基础API或org.hibernate.Transaction进行事务划分永远不是可选的。
ConnectionProvider(org.hibernate.connection.ConnectionProvider)
(可选)JDBC连接的工厂和池。 它从基础javax.sql.DataSource或java.sql.DriverManager中抽象应用程序。 它没有公开给应用程序,但是可以由开发人员扩展和/或实现。
TransactionFactory(org.hibernate.TransactionFactory)
(可选)org.hibernate.Transaction实例的工厂。 它没有公开给应用程序,但是可以由开发人员扩展和/或实现。
扩展接口
Hibernate提供了一系列可选的扩展接口,您可以实现这些接口来自定义持久层的行为。 有关详细信息,请参见API文档。
翻译自: https://www.javacodegeeks.com/2017/06/hibernate-architecture-overview.html