Hibernate多级交易

时间:2009-07-26 05:59:10

标签: java hibernate transactions dao data-access-object

我有一些hibernate代码,我希望我的代码在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
}

My GenericDAO在事务句柄中运行humanDao.update(he);branchDao.update(be);,即humanDao和branchDao都是从它继承的。 但是我希望这个代码块(上面写的)也能在事务中运行!!我怎么能到Hibernate这样做呢?

3 个答案:

答案 0 :(得分:2)

DAO不应该出于您发现的原因处理交易:他们无法知道他们何时成为更大交易的一部分。

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

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

答案 1 :(得分:1)

答案 2 :(得分:0)

我发现如果我在changeBranch(Branch branch)中进行新会话并将此会话作为参数传递给我的DAO,我应该如何修复它我的问题已解决