我有以下问题。有一个事务,如下所示。
交易:
假设我们有两个并行执行的事务(T1和T2)。
T1查看数据库,没有对象。一毫秒后,T2查看了数据库,也没有对象。
T1将对象保存到数据库中,并生成T2。
我们在数据库中有两个对象,而不是一个。
我能解决这个问题吗?
我用的是: Hibernate + Spring + Tomcat
谢谢。
发布于 2012-07-12 08:06:17
对于部署在一台服务器上的应用程序,解决方案非常简单。给函数“同步”属性。这样你就能确定这个问题不会发生。
但是,如果您在多台服务器上运行此应用程序,则可能会出现此问题。在这种情况下,您应该考虑一种集中式数据库访问机制。
这也可以使用sql server的特性来完成。在数据库服务器上创建一个存储过程,并给它一个适当的隔离级别。你可以在这里读到:set isolation level for postgresql stored procedures
发布于 2012-07-12 08:07:20
如果将两个相同的对象插入到数据库中,则会出现主键冲突,因此您的一个事务将无法写入并回滚。只需通过在对象属性上放置相关约束来确保对象必须是唯一的。
https://stackoverflow.com/questions/11447483
复制相似问题