2009-07-26 9 views
0

J'ai un code de mise en veille prolongée et je veux courir mon code dans 1 transaction laissez-moi vous expliquer dans le codeMise en veille prolongée à plusieurs niveaux de transactions

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 
} 

Les deux humanDao.update(he); et branchDao.update(be); course dans la poignée de transaction par My GenericDAO que humanDao et branchDao en sont hérités. mais je veux que ce bloc de code (écrit ci-dessus) fonctionne aussi dans une transaction !! Comment puis-je obtenir Hibernate pour faire cela?

Répondre

0

je trouve comment dois-je corriger si je nouvelle session en changeBranch(Branch branch) et passer cette session en tant que paramètre à mon OAC mon problème résolu

2

OTI ne doivent pas manipuler les transactions pour exactement la raison pour laquelle vous avez découvert: ils ne peuvent pas savoir quand ils font partie d'une opération plus importante.

Si vous utilisiez des transactions déclaratives Spring, vous auriez une couche de service qui créerait le contexte de transaction pour les deux DAO et traiterait tout. Je recommanderais de faire quelque chose comme ça.

MISE À JOUR: J'ai ajouté un lien vers Spring.

+0

Tanx mais je ne sais pas ce que sont les transactions déclaratives de printemps exactement, je dois lire à propos de cette méthode. – Am1rr3zA

+0

Je suis curieux. Pensez-vous que le DAO peut vider la session de mise en veille prolongée à la fin de sa partie de travail ou devrait-il attendre la fin de la transaction? –

+1

J'attendrais la fin de la transaction. – duffymo