java - 在dao层和service层使用@Transactional有什么区别?

标签 java spring-mvc

在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/

相关文章:

java - VisualVM - 不是有效的核心转储

java - Spring安全登录实现

java - 部署到应用程序服务器后出现 404,但不在本地

Spring MVC 重定向到特定 url 的 jsp

java - 如何修复打印为一列的二维数组

java - Android - 铃声不会停止播放

java - PDFBox:当前页面已满后如何创建新页面并定位文本

java - 如何找到与 java 中的输入匹配的正则表达式模式部分?

java - jsp中不显示值

mysql - 使用 tomcat 和 mysql 数据库托管 java web 应用程序