【发布时间】:2015-03-25 17:51:07
【问题描述】:
对于这个含糊的问题,我深表歉意,但我不知道如何用一句话来表达。这就是为什么我什至无法尝试谷歌搜索。
我有一个 DropWizard 资源,我使用 Hibernate 访问我的数据库。我有以下实体及其属性。
Trip
====
id
from_place
to_place
time
user_who_booked_it
trip_group_ref
TripGroup
=========
id
from_place
to_place
time
TripGroup 基本上将所有具有相同起点、终点和时间的旅行分组。这对以后的一些其他任务很有帮助。
创建Trip 对象的资源首先需要检查是否存在匹配的TripGroup,如果不存在则创建一个。这带来了一个问题。如果有并发请求,则可能会创建更多具有完全相同参数的 TripGroup 实例中的两个。
我该如何解决这个问题?
一种可能的解决方案是,我将检查和创建这些对象的代码部分封装在 synchronized 块中。但是,这可能不起作用,因为提交将在资源的方法完成后触发,即在 synchronized 块之外。
【问题讨论】:
标签: hibernate dropwizard concurrent-programming