休眠架构概述
下圖提供了Hibernate體系結(jié)構(gòu)的高級(jí)視圖:
最小的架構(gòu)
“最小”架構(gòu)使應(yīng)用程序可以管理自己的JDBC連接,并提供與Hibernate的連接。 另外,應(yīng)用程序自行管理交易。 這種方法使用了最少的Hibernate API子集。
綜合架構(gòu)
Hibernate Basic API
這里是有關(guān)上圖中描述的一些API對(duì)象的快速討論。
SessionFactory(org.hibernate.SessionFactory)
單個(gè)數(shù)據(jù)庫(kù)的線程安全,不變的已編譯映射緩存。 org.hibernate.Session實(shí)例的工廠。 org.hibernate.connection.ConnectionProvider的客戶端。 (可選)維護(hù)數(shù)據(jù)的第二級(jí)緩存,該數(shù)據(jù)可在流程或集群級(jí)別的事務(wù)之間重用。
會(huì)話(org.hibernate.Session)
單線程,短暫的對(duì)象,表示應(yīng)用程序與持久性存儲(chǔ)之間的對(duì)話。 包裝JDBC java.sql.Connection。 org.hibernate.Transaction的工廠。 維護(hù)持久性應(yīng)用程序的持久性對(duì)象和集合的第一級(jí)緩存; 在導(dǎo)航對(duì)象圖或通過標(biāo)識(shí)符查找對(duì)象時(shí)使用此緩存。
持久對(duì)象和集合
短暫的單線程對(duì)象,包含持久狀態(tài)和業(yè)務(wù)功能。 這些可以是普通的JavaBeans / POJO。 它們僅與一個(gè)org.hibernate.Session相關(guān)聯(lián)。 一旦org.hibernate.Session關(guān)閉,它們將被分離并且可以在任何應(yīng)用程序?qū)又凶杂墒褂?#xff08;例如,直接作為與表示之間的數(shù)據(jù)傳輸對(duì)象)。
瞬態(tài)和分離的對(duì)象和集合
當(dāng)前未與org.hibernate.Session關(guān)聯(lián)的持久化類的實(shí)例。 它們可能已被應(yīng)用程序?qū)嵗形闯志没?#xff0c;或者可能已被關(guān)閉的org.hibernate.Session實(shí)例化。
交易(org.hibernate.Transaction)
(可選)應(yīng)用程序用于指定原子工作單元的單線程短期對(duì)象。 它從底層的JDBC,JTA或CORBA事務(wù)中抽象應(yīng)用程序。 在某些情況下,一個(gè)org.hibernate.Session可能跨越多個(gè)org.hibernate.Transactions。 但是,使用基礎(chǔ)API或org.hibernate.Transaction進(jìn)行事務(wù)劃分永遠(yuǎn)不是可選的。
ConnectionProvider(org.hibernate.connection.ConnectionProvider)
(可選)JDBC連接的工廠和池。 它從基礎(chǔ)javax.sql.DataSource或java.sql.DriverManager中抽象應(yīng)用程序。 它沒有公開給應(yīng)用程序,但是可以由開發(fā)人員擴(kuò)展和/或?qū)崿F(xiàn)。
TransactionFactory(org.hibernate.TransactionFactory)
(可選)org.hibernate.Transaction實(shí)例的工廠。 它沒有公開給應(yīng)用程序,但是可以由開發(fā)人員擴(kuò)展和/或?qū)崿F(xiàn)。
擴(kuò)展接口
Hibernate提供了一系列可選的擴(kuò)展接口,您可以實(shí)現(xiàn)這些接口來自定義持久層的行為。 有關(guān)詳細(xì)信息,請(qǐng)參見API文檔。
翻譯自: https://www.javacodegeeks.com/2017/06/hibernate-architecture-overview.html
總結(jié)
- 上一篇: 静态工厂方法代替构造器实例_静态工厂方法
- 下一篇: 【Windows】外接USB键盘报“无法