在具有应用级别的唯一键约束的表格上处理数据插入/更新的最佳做法是什么?这些是我提出的:
赞成
缺点
赞成
缺点
哪一个是更广泛接受的解决方案?有替代品吗?
我正在使用Java,JPA,Hibernate和Spring BTW。任何建议,甚至是特定的框架,都是受欢迎的!
谢谢!
答案 0 :(得分:3)
你已经非常总结了。如果表现是一个问题,请选择第二种方式。如果诚信是一个问题,请选择第一种方式。
我个人赞成诚信而不是表现。硬件非常便宜,完整性不是。
答案 1 :(得分:2)
第三种选择是使用MERGE操作(有时称为UPSERT),如果您的DBMS支持它。通常有一种DBMS特定的方法来检查是否插入了行。
避免重言式“独特”的关键。键是唯一的,所以“键”这个词足以说明你的意思。
答案 2 :(得分:1)
我喜欢“乐观”的做法(“无所事事”)。你已经列举了专业人士。 你是对的,在这种情况下,你将验证委托给DB层。但是你使用JPA,DB层也是由java层生成的,所以实际上你的验证取决于你在java代码中的注释。因此,这不是一个大犯罪。
答案 3 :(得分:1)
唯一键通常是业务需求,因此您应该使用业务层来检查您打算使用的是否可用。将检查委派给数据库是一种优化,只应在需要时进行。