2009-07-26 2 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 моя проблема решена

1

Пожалуйста, см: Chapter 11. Transactions and Concurrency

+0

Я хочу быстрый ответ человек, я сам знаю, может прочитать с этого сайта – Am1rr3zA

+0

Это будет возьмите 5-10 минут по этой ссылке, чтобы это исправить! –

2

объекты DAO не должны обрабатывать транзакции по той причине, вы обнаружили: они не могут знать, когда они являются частью более крупной сделки.

Если вы использовали декларативные транзакции Spring, у вас должен быть сервисный уровень, который создавал бы контекст транзакции как для DAO, так и для всех. Я бы рекомендовал сделать что-то подобное.

UPDATE: Я добавил ссылку на Spring.

+0

Tanx, но я точно не знаю, что такое декларативные транзакции Spring, Я должен прочитать об этом методе. – Am1rr3zA

+0

Мне интересно - как вы думаете, нормально ли DAO (с нетерпением) сбрасывать сеанс гибернации, когда он завершает свою часть работы, или должен ли ждать завершения транзакции? –

+1

Я бы дождался завершения транзакции. – duffymo