強(qiáng)人Hibernate文檔筆記(上)
Hibernate文檔筆記共分為三個(gè)部分,此處是第一部分,講述了對(duì)象定義、實(shí)例狀態(tài)、JMX集成和JCA 支持四個(gè)部分的內(nèi)容。
一、對(duì)象定義
1.org.hibernate.SessionFactory
對(duì)于單個(gè)數(shù)據(jù)庫,被編譯的映射,是一個(gè)線程安全的緩沖區(qū)。是一個(gè)Session和ConnectionProvider客戶端的工廠。擁有可選的對(duì)過程級(jí)和集群級(jí)重復(fù)利用的數(shù)據(jù)的緩存(二級(jí)緩存)。
2.org.hibernate.Session
單線程、短生命周期的在應(yīng)用程序和持久化存儲(chǔ)系統(tǒng)之間的一個(gè)會(huì)話對(duì)象。封裝了一個(gè)JDBC連接。是一個(gè)事務(wù)的工廠。擁有強(qiáng)制的對(duì)持久化對(duì)象的緩存(一級(jí)緩存),當(dāng)通過標(biāo)識(shí)瀏覽對(duì)象之間關(guān)系和查找對(duì)象時(shí)使用。
3.Persistent objects and collections
包含執(zhí)久化狀態(tài)和業(yè)務(wù)功能的短生命周期的、單線程對(duì)象??梢允荘OJOs,通常是和Session(嚴(yán)格說,是單個(gè)Session)相關(guān)聯(lián)的對(duì)象。Session一關(guān)閉,他們將和Session分離,可以自由的使用在應(yīng)用層的任何地方。(也就是說,作為傳輸對(duì)象使用(Transfer Object)。)
4.Transient and detached objects and collections
不和當(dāng)前Session關(guān)聯(lián)的持久化類的實(shí)例。他們可以被應(yīng)用程序在不持久化時(shí)實(shí)例化,也可以被關(guān)閉的Session實(shí)例化。
5.org.hibernate.Transaction (可選)
應(yīng)用程序用來指定一個(gè)原子操作的單線程、短生命周期的對(duì)象。低層JDBC、JTA、CORBA事務(wù)的抽象程序。在相似的情況下,一個(gè)Session可以同時(shí)橫跨多個(gè)事務(wù)。事務(wù)劃分,既可以使用低層的APIs,也可以使用Transaction。
6.org.hibernate.connection.ConnectionProvider (可選)
JDBC連接或JDBC連接池的工廠。低層DataSource和DriverManager的抽象程序。
這個(gè)對(duì)象不暴露給應(yīng)用程序,但是應(yīng)用程序可以被開發(fā)者繼承和實(shí)現(xiàn)。
7.org.hibernate.TransactionFactory (可選)
Transaction實(shí)例的工廠。這個(gè)對(duì)象不暴露給應(yīng)用程序,但是應(yīng)用程序可以被開發(fā)者繼承和實(shí)現(xiàn)。
二、實(shí)例狀態(tài)
持久化對(duì)象根據(jù)持久化上下文的定義,可以有三種不同的狀態(tài)。Hibernate Session對(duì)象是一個(gè)持久化上下文。
1.transient
不關(guān)聯(lián)任何的持久化上下文。沒有持久化的標(biāo)識(shí)(指主鍵值Primary key value)。
2.persistent
和當(dāng)前持久化上下文關(guān)聯(lián)。他有一個(gè)持久化標(biāo)識(shí),多數(shù)情況,在數(shù)據(jù)庫中有對(duì)應(yīng)的行。對(duì)于特定的持久化上下文,Hibernate保證持久化標(biāo)識(shí)和Java標(biāo)識(shí)(內(nèi)存中對(duì)象的位置)相同。
3.detached
曾經(jīng)和一個(gè)持久化上下文關(guān)聯(lián),持久化上下文關(guān)閉;或者對(duì)象在另一個(gè)進(jìn)程中被序列化。他擁有持久化標(biāo)識(shí),多數(shù)情況,在數(shù)據(jù)庫中有對(duì)應(yīng)的行。對(duì)于分離對(duì)象Hibernate不保證持久化標(biāo)識(shí)和Java標(biāo)識(shí)的對(duì)應(yīng)關(guān)系。
三、JMX集成
JMX是Java組件管理的JEE標(biāo)準(zhǔn)。Hibernate可以被JMX服務(wù)管理。在發(fā)行版本中,Hibernate提供了一個(gè)MBean的實(shí)現(xiàn),org.hibernate.jmx.HibernateService。
在JBoss上,你使用JMX可以得到的好處:
1.Session Management
Hibernate Session的生命周期可以自動(dòng)的綁定到JTA事務(wù)范圍。這意味著,你不需要手動(dòng)的打開關(guān)閉Session,這成為JBoss EJB攔截器的要完成的工作。在你的代碼中,也不用擔(dān)心事務(wù)的劃分,當(dāng)然除非你想要寫一個(gè)輕便的持久化層,通過使用Hibernate Transaction APIs。你可以調(diào)用HibernateContext來訪問Session。
2.HAR deployment
通常使用JBoss Service Deployment Descriptor(在EAR或SAR文件中)發(fā)布Hibernate JMX Service,它支持Hibernate SessionFactory所有的常用配置選項(xiàng)。無論如何,你還需要在deployment descriptor中描述所有的映射文件。如果你使用可選的HAR Deployment,JBoss將自動(dòng)檢測(cè)所有的映射文件在HAR文件中。
四、JCA 支持
Hibernate也可以配置作為一個(gè)連接器。該功能是實(shí)踐型功能。
以上四個(gè)方面的內(nèi)容組是我的Hibernate文檔筆記的第一部分,想更多的了解,請(qǐng)關(guān)注其他兩個(gè)部分。
【編輯推薦】