標籤:hibernate java orm 體繫結構
SessionFactory:是單個資料庫映射關係經過編譯後的記憶體鏡像,他是安全執行緒的。是產生Session的工廠,本身需依賴於ConnectionProvider。該對象可在進程或叢集的層級上,為那些事物之間可重用的資料提供可選的二級緩衝
Session:是應用程式與持久儲存層之間互動操作的一個單線程對象。所有的持久化對象必須在Session管理下才可進行持久化操作。其生存期很短。它底層封裝了JDBC串連,他也是Transaction的工廠、Session對象持有一個必選的一級緩衝,顯式執行flush之前,所有持久化操作的資料都緩衝在Session對象中
Transaction:代表一次原子操作,它具有資料庫事務的概念。Hiberante事務是對底層具體的JDBC、JTA以及CORBA事務的抽象。在某些情況下,一個Session之內可能包含多個Transation對象;雖然事務操作可選,但所有持久化操作都應該在交易管理下進行,即使是唯讀操作
持久化對象:系統建立的POJO執行個體,一旦與特定Session關聯,並對應資料表的指定記錄,該就像就處於持久化轉態,這一系列對象都被稱為持久化對象。在程式中對持久化對象執行的修改,都將自動被轉換為持久層的修改。持久化對象完成可以是普通的JavaBean/POJO,唯一特殊的是他們正與一個Session關聯
瞬態對象:new建立的Java執行個體,沒有與Session相關聯(瞬態);瞬態執行個體可能是被應用程式執行個體化後,尚未進行持久化的對象;
脫管對象:曾經持久化過的執行個體,但因為Session的關閉則轉化為託管狀態
串連提供者(ConnectionProvider):產生JDBC串連的工廠,通過抽象將應用程式與地層的DataSource或DriverManager隔離開。該對象僅在應用程式需擴充時使用
事務工廠(TransactionFactory):產生Transaction對象執行個體的工廠。該對象無須應用程式直接存取。它負責對地層具體的事務實現進行封裝、將地層具體的事務抽象成Hibernate事務
實際應用中很少直接使用DriverManager來擷取資料庫連接,通常用DataSource來擷取資料庫連接,因此實際應用中ConnectionProvicer通常由DataSource充當。由於SessionFactory底層封裝了ConnectionProvider,因此實際應用中,SessionFactory底層封裝了DataSource
Hibernate-----3、Hibernate的體繫結構