我公开了一个Web服务,它会将一些数据保存到某个表中。我正在使用sqlserver数据库。多个系统可以同时使用Web服务。
问题是两个系统正在检查记录的存在并报告为false,同时插入一条新记录,这导致由于重复密钥导致并发异常。
我正在使用hibernate,而那些调用webservice的系统也提供了主键。
我可以将此方法设为synchronized
吗?会有缺点还是有任何优雅的方法来做到这一点?
谢谢!
答案 0 :(得分:0)
我不建议使用synchronised
或甚至使用Java / Hibernate来避免重复;如果您必须扩展现有应用程序或添加另一个修改数据的应用程序,您仍会遇到此问题。
执行此操作的最佳方法是在表上设置唯一约束以避免重复;这允许您在插入副本时执行唯一约束违规并按照您的意愿执行操作。