在dao层和service层使用@Transactional
有什么区别?
@Transactional
class UserDAO{}
或
@Transactional
class UserService{}
我们可以把这个注释放在两个层中。那有什么区别呢?
最佳答案
如果你在服务层添加了@Transactional
注解并且你正在对数据库执行多个操作,那么所有这些操作都将在一个事务中并且你可以确保这两个操作都是提交,如果其中任何一个失败,则回滚。
例如:在这种情况下,您想要创建一个员工,而您的业务规则规定,对于您创建的每个员工,您都需要在数据库中创建用户。在这种情况下,我们将在服务层使用事务注释
@Service
public class EmployeeService {
....
@Transactional
public int createEmployee(Employee emp) {
//create Employee
employeeDao.createEmployee(emp);
User user = new User();
// some fileds of employee are used to create a User
user.setEmployeeId(emp.getEmployeeId());
....
userDao.createUser(user);
...
}
}
关于java - 在dao层和service层使用@Transactional有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28539715/