使用JDBC的事務(wù)處理機(jī)制:
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)鍵的組成部分,在進(jìn)行Hibernate實(shí)體屬性映射關(guān)系定義時(shí),需要提供屬性的數(shù)據(jù)類型設(shè)定,通過這些類型定義,Hibernate即可完成Java數(shù)據(jù)類型到數(shù)據(jù)庫(kù)特定數(shù)據(jù)類型的映射關(guān)系。
實(shí)體映射技術(shù)作為類與表之間的聯(lián)系紐帶,在ORM實(shí)現(xiàn)中起著至關(guān)重要的作用。
實(shí)體映射的核心內(nèi)容,即實(shí)體類與數(shù)據(jù)庫(kù)表之間的映射定義。Hibernate中,類表映射主要包括3個(gè)部分內(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".并指定了當(dāng)前XML的DTD,DTD文件對(duì)當(dāng)前XML文檔中的節(jié)點(diǎn)進(jìn)行定義,這樣我們加載配置文件之前,可通過指定的DTD對(duì)當(dāng)前XML中的節(jié)點(diǎn)進(jìn)行檢查,確定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é)點(diǎn)的配置,hibernate即可獲知類與表的映射關(guān)系,即每個(gè)TUser類對(duì)象對(duì)應(yīng)T_User表中的一條記錄。
ID節(jié)點(diǎn)定義類實(shí)體類的標(biāo)示(identity),在這里也就是對(duì)應(yīng)庫(kù)表主鍵的類屬性,name="id"指定了當(dāng)前映射類中的屬性"id"對(duì)應(yīng)了T_User表中的主鍵字段。
column="id"指定了當(dāng)前映射表T_User唯一標(biāo)示為"id"字段.id字段是T_User表的一個(gè)自增型字段,同時(shí)也是T_User表的主鍵。通過id字段我們即可唯一定位一條記錄。
type="java.lang.Integer"指定了當(dāng)前字段的數(shù)據(jù)類型。
<generator class="native"/>指定了主鍵生成方式,這里的class="native"設(shè)定,意味著將主鍵生成機(jī)制的實(shí)現(xiàn)方式交由hibernate決定,hibernate將根據(jù)底層數(shù)據(jù)庫(kù)適配器的定義,采用不同數(shù)據(jù)庫(kù)特定的主鍵生成方式。