我怀疑放置Spring注释,在哪一层?这是两种情况:
案例:将@Transactional
放入DAO图层
案例:将@Transactional
放入服务层?
我只使用Spring,而不是SpringMVC。
答案 0 :(得分:4)
您希望自己的服务为@Transactional
。如果您的DAO是事务性的,并且您在每个服务中调用不同的DAO,那么您将有多个tansaction,这不是您想要的。进行服务调用@Transactional
,这些方法中的所有DAO调用都将参与该方法的事务。
答案 1 :(得分:3)
将它放在服务层中,因为服务可能希望访问多个DAO方法,但这些方法仍将被视为同一业务事务的一部分。
答案 2 :(得分:2)
事务通常意味着您希望将一些操作组合在一起 例如:
void bankTransfer(String fromAccount, String toAccount, BigDecimal amount)
{
if (amount.compareTo(BigDecimal.ZERO) < 0) throw new RuntimeException("hack attempt");
accountDao.deduct(fromAccount, amount);
accountDao.add(toAccount, amount);
}
这里银行转账有逻辑。 account dao没有逻辑,只是扣除并添加。