线程安全无状态会话Bean

时间:2011-07-03 13:30:02

标签: multithreading jpa java-ee ejb-3.0 ejb

我想知道使db update thread安全的最佳做法是什么。

我正在调用无状态会话bean的

  

public void addReservation(预订)

在添加此预订之前 - 我想使用实体bean的方法检查是否仍有有效的预订位置

  

public boolean isThereRoomForAnotherReseravtion()

我读here同步方法无法解决问题。

我想过使用存储过程和解决方案的验证规则,但听起来不对。

是否有使编写程序线程安全的标准做法?

此致

丹尼

1 个答案:

答案 0 :(得分:4)

没有Java同步实际上可以帮助您,因为可以始终存在可以同时访问数据库的第二个数据库客户端(甚至可能是您在集群环境中的应用程序)。

您需要深入了解数据库层并使用数据库锁定工具,如乐观/悲观锁定。 JPA 1.0支持前者,2.0支持两者。选择取决于您怀疑要经历多少并发。