0

我有一些休眠代码,我希望我的代码在 1 个事务中运行让我在代码中解释

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);在 My GenericDAO 的事务句柄中,humanDao 和 branchDao 都继承自它。但我希望这段代码(上面写的)也能在事务中运行!!我怎样才能让 Hibernate 做到这一点?

4

3 回答 3

2

DAO 不应该完全按照您发现的原因处理事务:它们不知道它们何时是更大事务的一部分。

如果您使用的是Spring声明式事务,那么您将拥有一个服务层,该服务层将为两个 DAO 创建事务上下文并处理所有事情。我建议做这样的事情。

更新:我添加了一个指向 Spring 的链接。

于 2009-07-26T14:31:02.100 回答
1

请参阅:第 11 章。事务和并发

于 2009-07-26T07:13:02.387 回答
0

我发现如果我进入新会话 changeBranch(Branch branch)并将此会话作为参数传递给我的 DAO 我应该如何解决我的问题

于 2009-07-28T07:59:43.690 回答