Hibernate鐨勯粯璁や簨鍔″鐞嗘満鍒跺熀浜嶫DBCTransaction錛屼篃鍙互閫氳繃閰嶇疆鏂囦歡璁懼畾閲囩敤JTA浣滀負浜嬪姟綆$悊瀹炵幇錛?/p>
<hibernate-configuration>
<session-factory>
……
<property name = "hibernate.transaction.factory_class">
net.sf.hibernate.transaction.JTATransactionFactory
</session-factory>
</hibernate-configuration>
1銆佸熀浜嶫DBC鐨勪簨鍔$鐞?/p>
Hibernate瀵逛簬JDBC浜嬪姟鐨勫皝瑁呴潪甯哥畝鍗曘備緥濡傦細
session=sessionFactory.openSession();
Transaction tx= session.beginTransaction();
……
tx.commit();
榪欓噷瑕佹敞鎰忕殑鏄紝鍦╯essionFactory.openSession()涓紝Hibernate浼氬垵濮嬪寲鏁版嵁搴撹繛鎺ワ紝涓庢鍚屾椂錛屽皢鍏?AutoCommit璁句負鍏抽棴鐘舵侊紝榪欏氨鏄錛屼粠SessionFactory鑾峰緱session錛屽叾鑷姩鎻愪氦灞炴у氨宸茬粡琚叧闂簡錛屼笅闈㈢殑浠g爜涓嶄細瀵逛簨鍔℃ф暟鎹簱浜х敓浠諱綍鏁堟灉銆?/p>
session=sessionFactory.openSession();
session.save(user);
session.close();
濡傛灉瑕佷嬌寰椾唬鐮佺湡姝d綔鐢ㄥ埌鏁版嵁搴擄紝蹇呴』鏄劇ず鐨勮皟鐢═ransaction鎸囦護
session=sessionFactory.openSession();
Transaction tx = session.beginTransaction();
session.save(user);
tx.commit();
session.close();
2銆佸熀浜嶫TA鐨勪簨鍔$鐞?/p>
JTA鎻愪緵浜嗚法Session鐨勪簨鍔$鐞嗚兘鍔涳紝榪欐槸涓嶫DBCTransaction鏈澶х殑宸紓銆?/p>
JDBC浜嬪姟鐢盋onnection綆$悊錛屼篃灝辨槸璇達紝浜嬪姟綆$悊瀹為檯涓婃槸鍦↗DBC Connection涓疄鐜幫紝浜嬪姟鍛ㄦ湡闄愪簬Connection鐨勭敓鍛藉懆鏈熶箣鍐咃紝瀵逛簬鍩轟簬JDBC Transaction鐨凥ibernate浜嬪姟綆$悊鏈哄埗錛屼簨鍔$鐞嗗湪Session鎵渚濇墭鐨凧DBC Connection涓疄鐜幫紝浜嬪姟鍛ㄦ湡闄愪簬Session鐨勭敓鍛藉懆鏈熴?/p>
JTA浜嬪姟綆$悊鐢盝TA瀹瑰櫒瀹炵幇錛孞TA瀹瑰櫒瀵瑰綋鍓嶅姞鍏ヤ簨鍔$殑浼楀Connection榪涜璋冨害錛屽疄鐜板叾浜嬪姟鎬ц姹傦紝JTA鐨勪簨鍔″懆鏈熷彲妯法澶氫釜JDBC Connection鐢熷懡鍛ㄦ湡錛屽悓鏍鳳紝瀵瑰熀浜嶫TA浜嬪姟鐨凥ibernate錛孞TA浜嬪姟妯法澶氫釜Session銆傞渶瑕佹敞鎰忕殑鏄紝鍙備笌JTA浜嬪姟鐨?Connection闇閬垮厤瀵逛簨鍔$鐞嗚繘琛屽共娑夛紝濡傛灉閲囩敤JTA Transaction錛屽氨涓嶅簲璇ュ啀璋冪敤Hibernate鐨凾ransaction鍔熻兘銆?br>