2

在我看来,使用 Spring JPA 启动/停止事务的常用方法是使用 @Transactional 注释公共函数

我无法弄清楚的是是否可以注释一个类以使范围更宽一些。

假设您有一个调用 3 个函数的 Web 服务,其中两个首先您希望操作数据并将其留在附加到会话的内存中,但在第三次调用时您希望存储更改的实体。对此的最佳做法是什么?

4

1 回答 1

3

您所说的也称为会话管理

请记住,事务必须尽可能短。在多个请求-响应循环期间保持数据库事务不是一种选择(出于技术原因:事务绑定到一个线程,并且通常 2 个请求由 2 个不同的线程处理)。

但是,JPA 提供了Extended Persistence Context来帮助您实现对话管理

扩展的持久性上下文可以在事务边界之外用于只读操作;所有非只读操作都必须在事务中执行。基本上,扩展的持久性上下文可以加入一个事务。这就是您可以在对话结束时提交扩展持久性上下文的方式。

于 2013-01-02T14:51:56.487 回答