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

前端之家收集整理的这篇文章主要介绍了java – 访问数据库的多个线程:一个具有长事务,一个具有短事务前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

@Entity
public class Garage {
    private List

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

beginTransaction();
Garage garage = garageDao.findGarage(1);
List

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

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

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

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

猜你在找的Java相关文章