微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 访问数据库的多个线程:一个具有长事务,一个具有短事务

假设我有一个桌面应用程序,可以充当一堆汽车的车库:

@Entity
public class Garage {
    private List

桌面应用程序有一个“模拟”按钮,可以启动一个新线程并开始调用Garage,Car,Wheel等方法.此模拟可能需要长达10分钟才能运行.目前我有一个看起来像这样的课程:

beginTransaction();
Garage garage = garageDao.findGarage(1);
Listarage.getCars();
for (Car car : cars) {
    // call methods on the car to lazily fetch other things like wheels...
}
commitTransaction();

代码只执行“读取”而从不“写入”

因此,上述情况可能需要很长时间,具体取决于汽车需要多少服务.在发生上述情况时,用户可以继续使用桌面应用程序.他们可能会选择更改上述交易中使用的汽车颜色.

我的问题是,上述长期交易是否会阻止汽车颜色的变化?即,在长期交易完成之前,将阻止用户更改桌面应用程序中汽车的颜色?

最佳答案
为什么要这样?认情况下,您使用乐观事务,因此没有锁定应用于正在读取的行(除非您没有向我们展示一些JPA2 lock()调用).然后,事务提交应检查记录的乐观版本(如果已定义版本)并使用它来决定是否提交更改.

原文地址:https://www.jb51.cc/java/437767.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐