0
原子操作我必须做这个任务:在DB写入记录之前休眠
1- Read a max value of a field from a table
2- use this value to create new record
3- save the record
在步骤1中的值必须是唯一的。
问题是这个任务可以由不同的客户端完成。
使这种操作成为原子的最佳方式是什么?
感谢所有。
原子操作我必须做这个任务:在DB写入记录之前休眠
1- Read a max value of a field from a table
2- use this value to create new record
3- save the record
在步骤1中的值必须是唯一的。
问题是这个任务可以由不同的客户端完成。
使这种操作成为原子的最佳方式是什么?
感谢所有。
我的建议: - 为表格的字段添加唯一约束 - 使用Hibernate选择最大值,将值分配给实体并保存。
当然,字段具有唯一的约束,并且不同的客户端可以选择相同的值并尝试保存它,这是问题所在。 – blow
第一个客户端将保存数据,第二个客户端将获得异常(唯一约束违规),这就是重点。但是,如果你想避免这些错误,你必须使用某种独特的密钥生成器(例如,Oracle中的序列,初始值为max(table.value)) – never
我需要实现这一点而不会引发异常,但谢谢。 – blow