在我看来,使用Spring JPA启动/停止事务的常见方法是用@ transaction注释公共函数
我不能确定的是,是否有可能注释一个类,使其范围更广一些。
假设您有一个调用3个函数的wish服务,对于前两个函数,您希望操作数据并将其保留在连接到会话的内存中,但在第三个调用中,您希望存储更改后的实体。这方面的最佳实践是什么?
发布于 2013-01-02 22:51:56
您正在讨论的内容也称为会话管理。
请记住,必须尽可能短的事务。在多个请求-响应循环期间保持数据库事务是不可行的(出于技术原因:一个事务绑定到一个线程,通常两个请求由两个不同的线程处理)。
但是,JPA提供了Extended Persistence Context来帮助您实现会话管理。
扩展持久化上下文可以在事务边界之外用于只读操作;所有非只读操作都必须在事务内执行。基本上,扩展的持久化上下文可以联接一个事务。这就是在对话结束时提交扩展持久化上下文的方法。
https://stackoverflow.com/questions/14122776
复制相似问题