使用JDBC的事務(wù)處理機制:
hibernate.transaction.factory_class net.sf.hibernate.transaction.JDBCTransactionFactory
使用JTA
hiberante.transaction.factory_class net.sf.hibernate.transaction.JTATransactionFactory
jta.UserTransaction jta/usertransaction
O/R映射關(guān)系無疑是ORM框架中最為關(guān)鍵的組成部分,在進行Hibernate實體屬性映射關(guān)系定義時,需要提供屬性的數(shù)據(jù)類型設(shè)定,通過這些類型定義,Hibernate即可完成Java數(shù)據(jù)類型到數(shù)據(jù)庫特定數(shù)據(jù)類型的映射關(guān)系。
實體映射技術(shù)作為類與表之間的聯(lián)系紐帶,在ORM實現(xiàn)中起著至關(guān)重要的作用。
實體映射的核心內(nèi)容,即實體類與數(shù)據(jù)庫表之間的映射定義。Hibernate中,類表映射主要包括3個部分內(nèi)容:
a、表名-類名映射
b、主鍵映射
c、字段映射
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd>
<hibernate-mapping>
<class name="com.redsage.hibernate.db.entity.TUser" table="T_USER"/>
<id name="id" column="id" type="java.lang.Integer">
<generator class="native"/>
</id>
<property name="name" column="name" type="java.lang.String"/>
<property name="age" column="age" type="java.lang.Integer"/>
</class>
</hibernate-mapping>
XML文件頭定義了本XML文檔所采用的編碼方式:encoding="UTF-8".并指定了當前XML的DTD,DTD文件對當前XML文檔中的節(jié)點進行定義,這樣我們加載配置文件之前,可通過指定的DTD對當前XML中的節(jié)點進行檢查,確定XML結(jié)構(gòu)和數(shù)據(jù)類型是否合法。<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd>
<hibernate-mapping>
<class name="com.redsage.hibernate.db.entity.TUser" table="T_USER"/>
<id name="id" column="id" type="java.lang.Integer">
<generator class="native"/>
</id>
<property name="name" column="name" type="java.lang.String"/>
<property name="age" column="age" type="java.lang.Integer"/>
</class>
</hibernate-mapping>
通過CLASS節(jié)點的配置,hibernate即可獲知類與表的映射關(guān)系,即每個TUser類對象對應T_User表中的一條記錄。
ID節(jié)點定義類實體類的標示(identity),在這里也就是對應庫表主鍵的類屬性,name="id"指定了當前映射類中的屬性"id"對應了T_User表中的主鍵字段。
column="id"指定了當前映射表T_User唯一標示為"id"字段.id字段是T_User表的一個自增型字段,同時也是T_User表的主鍵。通過id字段我們即可唯一定位一條記錄。
type="java.lang.Integer"指定了當前字段的數(shù)據(jù)類型。
<generator class="native"/>指定了主鍵生成方式,這里的class="native"設(shè)定,意味著將主鍵生成機制的實現(xiàn)方式交由hibernate決定,hibernate將根據(jù)底層數(shù)據(jù)庫適配器的定義,采用不同數(shù)據(jù)庫特定的主鍵生成方式。