[英]Unique Key Constraint
在应用程序级别处理具有唯一键约束的表上的数据插入/更新的最佳实践是什么? 这些是我想出的:
优点
缺点
优点
缺点
哪个是更广泛接受的解决方案? 有其他替代方法吗?
我正在使用Java,JPA,Hibernate和Spring BTW。 欢迎任何建议,甚至是特定于框架的建议!
谢谢!
您已经对它进行了总结。 如果需要考虑性能,请选择第二种方法。 如果要考虑完整性,请采用第一种方法。
我个人更喜欢诚信而不是表现。 硬件很便宜,完整性不是。
第三种选择是,如果您的DBMS支持,则使用MERGE操作(有时称为UPSERT)。 通常,有一种DBMS特定的方式来检查是否插入了行。
避免使用重言式“唯一”键。 键是唯一的,因此“键”一词足以说明您的意思。
我喜欢“乐观”的方法(“什么都不做”)。 您已经列举了优点。 没错,在这种情况下,您将验证委派给数据库层。 但是,如果您使用的是JPA,则DB层也是由Java层生成的,因此实际上您的验证取决于Java代码中的注释。 因此,这不是大罪。
唯一密钥通常是一项业务需求,因此您应使用业务层来检查您打算使用的密钥是否可用。 将检查委托给数据库是一种优化,只能在需要时执行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.