有没有一种方法可以使用 SpringMVC 设置 MyBatis,以便对整个 http 请求进行一个事务处理?通常在 MyBatis 中有类似 Hibernate OpenSessionInViewFilter
的东西,还是我应该编写自己的过滤器来实现这种行为?
最佳答案
您对“ session ”和“事务”的概念感到困惑。 OSIV 开启 session ,在一个 session 中多个事务可能并存。通常你应该把 @Transactional
属性放到 Controller 使用的服务中,这取决于你的业务需求。
此外,对所有事物的一次大交易是一种反模式。理想情况下是为用户的操作创建一个读写事务,然后另一个只读事务为用户构建响应。它节省了资源,因为为插入/更新获取的数据库锁会提前释放。
关于java - 使用 MyBatis 和 Spring 进行具有请求范围的事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10888861/