锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
ERROR - Io 寮傚父錛歋oftware caused connection abort: recv failed
璇烽棶鏄粈涔堝師鍥犻犳垚鐨勶紝璋㈣阿錛?/p>
]]>
]]>
1.瀹氫箟SanHibernateTransactionManager綾伙紝緇ф壙spring涓殑
HibernateTransactionManager錛屼究浜庤幏寰桯ibernateTransactionObject銆傛妸榪欎釜綾繪敞鍏ュ埌spring瀹瑰櫒涓?br />
<
bean聽(tīng)
id
="transactionManager"
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)class
="com.san.tools.hibernate.SanHibernateTransactionManager"
>
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)
<
property聽(tīng)
name
="sessionFactory"
>
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)
<
ref聽(tīng)
bean
="sessionFactory"
/>
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)
</
property
>
聽(tīng)聽(tīng)聽(tīng)聽(tīng)
</
bean
>
聽(tīng)
public聽(tīng)class聽(tīng)SanHibernateTransactionManager聽(tīng)extends聽(tīng)HibernateTransactionManager
{
聽(tīng)聽(tīng)聽(tīng)聽(tīng)public聽(tīng)Object聽(tīng)getTransactionObj()
{
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)return聽(tīng)super.doGetTransaction();
聽(tīng)聽(tīng)聽(tīng)聽(tīng)}
聽(tīng)聽(tīng)聽(tīng)聽(tīng)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)public聽(tīng)boolean聽(tīng)existsTransaction(Object聽(tīng)transaction)
{
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)return聽(tīng)super.isExistingTransaction(transaction);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)}
聽(tīng)聽(tīng)聽(tīng)聽(tīng)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)public聽(tīng)Session聽(tīng)getSession()
{
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)return聽(tīng)SessionFactoryUtils.getSession(this.getSessionFactory(),聽(tīng)true);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)}
聽(tīng)聽(tīng)聽(tīng)聽(tīng)
聽(tīng)聽(tīng)聽(tīng)聽(tīng)public聽(tīng)Session聽(tīng)getCurrentSession()
{
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)HibernateTransactionObject聽(tīng)obj聽(tīng)=聽(tīng)(HibernateTransactionObject)this.getTransactionObj();
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)return聽(tīng)obj.getSessionHolder().getSession();
聽(tīng)聽(tīng)聽(tīng)聽(tīng)}
}
2.寮濮嬩簨鍔°?/font>
public
聽(tīng)
void
聽(tīng)beginTransaction()聽(tīng)
throws
聽(tīng)SQLException
{
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)
//
TransactionDefinition.PROPAGATION_REQUIRED:鏀寔褰撳墠鐨勪簨鍔★紝濡傛灉涓嶅瓨鍦ㄥ氨鍒涘緩涓涓柊鐨勩?/span>
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)DefaultTransactionDefinition聽(tīng)transactionDef聽(tīng)
=
聽(tīng)
new
聽(tīng)DefaultTransactionDefinition(TransactionDefinition.PROPAGATION_REQUIRED);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)
//
鍒涘緩涓涓猅ransactionStatus
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)TransactionStatus聽(tīng)transactionStatus聽(tīng)
=
聽(tīng)transactionManager.getTransaction(transactionDef);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)
//
鍙栧緱緇戝畾鍒板綋鍓嶇嚎紼嬩笂鐨剆ession銆備粠HibernateTransactionObject涓幏寰楋紝榪欓噷淇敼浜?jiǎn)spring涓璈ibernateTransactionManager.java鏂囦歡錛?br />
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)
//
灝唒rivate聽(tīng)HibernateTransactionObject鏀逛負(fù)protected聽(tīng)HibernateTransactionObject
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)Session聽(tīng)session聽(tīng)
=
聽(tīng)transactionManager.getCurrentSession();
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)
if
(session聽(tīng)
!=
聽(tīng)
this
.session)
{
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)System.err.println(
"
session涓嶆槸鍚屼竴瀵硅薄
"
);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)}
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)
//
灝唗ransactionStatus淇濆瓨鍒伴泦鍚堜腑
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)
this
.transactionStatuss.add(transactionStatus);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)
this
.beginTransaction聽(tīng)
=
聽(tīng)
true
;
聽(tīng)聽(tīng)聽(tīng)聽(tīng)}
public
聽(tīng)
void
聽(tīng)commit()聽(tīng)
throws
聽(tīng)HibernateException,SQLException
{
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)
//
寰幆TransactionStatus闆嗗悎錛岀洿鑷崇涓涓猼ransactionStatus琚彁浜ゆ椂錛屾墠鐪熸鎻愪氦
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)
for
(
int
聽(tīng)i聽(tīng)
=
聽(tīng)transactionStatuss.size()聽(tīng)
-
聽(tīng)
1
;i聽(tīng)
>=
聽(tīng)
0
;i
--
)
{
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)DefaultTransactionStatus聽(tīng)transactionStatus聽(tīng)
=
聽(tīng)(DefaultTransactionStatus)transactionStatuss.get(i);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)transactionManager.commit(transactionStatus);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)}
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)transactionStatuss.clear();
聽(tīng)聽(tīng)聽(tīng)聽(tīng)}
public聽(tīng)void聽(tīng)rollBack()
{
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)for(int聽(tīng)i聽(tīng)=聽(tīng)transactionStatuss.size()聽(tīng)-聽(tīng)1;i聽(tīng)>=聽(tīng)0;i--)
{
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)DefaultTransactionStatus聽(tīng)transactionStatus聽(tīng)=聽(tīng)(DefaultTransactionStatus)transactionStatuss.get(i);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)transactionManager.rollback(transactionStatus);
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)}
聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)聽(tīng)transactionStatuss.clear();
聽(tīng)聽(tīng)聽(tīng)聽(tīng)}
]]>