configuration 類負責管理hibernate的配置資訊。它包括如下內容:
hibernate執行的底層資訊:資料庫的url、使用者名稱、密碼、jdbc驅動類,資料庫dialect,資料庫連線池等。
hibernate對映檔案(*.hbm.xml)。
hibernate配置的兩種方法:
屬性檔案(hibernate.properties)。
呼叫**:configurationcfg = new configuration();
xml檔案(hibernate.cfg.xml)。
呼叫**:configurationcfg = new configuration().configure();
應用程式從sessionfactory(會話工廠)裡獲得session(會話)例項。它在多個應用執行緒間進行共享。通常情況下,整個應用只有唯一的乙個會話工廠——例如在應用初始化時被建立。然而,如果你使用hibernate訪問多個資料庫,你需要對每乙個資料庫使用乙個會話工廠。
會話工廠快取了生成的sql語句和hibernate在執行時使用的對映元資料。
呼叫**:
sessionfactorysessionfactory = cfg.buildsessionfactory();
說明:sessionfactory由configuration物件建立,所以每個hibernate配置檔案,實際上是對sessionfactory的配置
session不是執行緒安全的,它代表與資料庫之間的一次操作,它的概念介於connection和transaction之間。
session也稱為持久化管理器,因為它是與持久化有關的操作介面。
session通過sessionfactory開啟,在所有的工作完成後,需要關閉。
它與web層的httpsession沒有任何關係。
呼叫**:session session= sessionfactory.opensession();
它將應用**從底層的事務實現中抽象出來——這可能是乙個jdbc事務,乙個jta使用者事務或者甚至是乙個公共物件請求**結構(corba)——允許應用通過一組一致的api控制事務邊界。這有助於保持hibernate應用在不同型別的執行環境或容器中的可移植性。
呼叫**: transaction tx =session.begintransaction();
使用hibernate進行操作時必須顯式的呼叫transaction(預設:autocommit=false)。
query(查詢)介面允許你在資料庫上執行查詢並控制查詢如何執行。查詢語句使用hql或者本地資料庫的sql方言編寫。
呼叫**: query query =session.createquery(「from user」);
瞬時物件(transientobjects):使用new 操作符初始化的物件不是立刻就持久的。它們的狀態是瞬時的,也就是說它們沒有任何跟資料庫表相關聯的行為,只要應用不再引用這些物件(不再被任何其它物件所引用),它們的狀態將會丟失,並由垃圾**機制**。
持久化物件(persist objects):持久例項是任何具有資料庫標識的例項。它有持久化管理器session統一管理,持久例項是在事務中進行操作的——它們的狀態在事務結束時同資料庫進行同步。當事務提交時,通過執行sql的insert、update和delete語句把記憶體中的狀態同步到資料庫中。
離線物件(detachedobjects):session關閉之後,持久化物件就變為離線物件。離線表示這個物件不能再與資料庫保持同步,它們不再受hibernate管理。
Hibernate的核心物件關係對映
hibernate的核心就是物件關係對映 1 第一掌握對映檔案的書寫 2 第二掌握如何對映某乙個物件,以及class裡面主鍵和普通欄位的設定。注意 property的column屬性的值不能是sql語句的關鍵字,比如desc關鍵字做描述的時候,如果非要使用,可以使用 shift 反引號,不然就要改列...
Hibernate的核心物件關係對映
hibernate的核心就是物件關係對映 1 第一掌握對映檔案的書寫 2 第二掌握如何對映某乙個物件,以及class裡面主鍵和普通欄位的設定。注意 property的column屬性的值不能是sql語句的關鍵字,比如desc關鍵字做描述的時候,如果非要使用,可以使用 shift 反引號,不然就要改列...
Hibernate的核心物件關係對映
hibernate的核心就是物件關係對映 1 第一掌握對映檔案的書寫 2 第二掌握如何對映某乙個物件,以及class裡面主鍵和普通欄位的設定。注意 property的column屬性的值不能是sql語句的關鍵字,比如desc關鍵字做描述的時候,如果非要使用,可以使用 shift 反引號,不然就要改列...