2009-07-26 65 views
0

的多層次,我有一些休眠的代碼,我想我在1個交易代碼運行 讓我在代碼解釋Hibernate事務

public void changeBranch(Branch branch) throws DatabaseException { 
//some code 
      humanDao.update(he); 
      superBranchUsername = branch.getFatherUsername(); 
      int superBranchId = branchDao.getBranchIdByUserName(superBranchUsername); 
      BranchEntity superBranch = branchDao.load(superBranchId); 
      BranchEntity be = new BranchEntity(); 
      setBranchEntity(be, he, pkId, bname, confirmed, level, studentCount, uname, superBranch); 
      branchDao.update(be); // update kardane jadvale Branch va Set kardane Human motenazer be on 
//some code 
} 

兩個humanDao.update(he);branchDao.update(be);運行中的事務處理由我GenericDAO是humanDao和branchDao從它繼承。 但我想要這塊代碼(寫在上面)也運行在一個交易!我怎樣才能讓Hibernate做到這一點?

回答

0

,我覺得我應該怎麼解決這個問題,如果我在changeBranch(Branch branch)新會話,這會作爲參數傳遞給我的DAO我的問題解決了

2

的DAO不應該處理事務整整你已經發現了原因:他們不知道什麼時候他們是一個更大的交易的一部分。

如果您使用的是Spring聲明性事務,您將有一個服務層爲兩個DAO創建事務上下文並處理所有事務。我會推薦做這樣的事情。

更新:我添加了一個鏈接到Spring。