搜索了很长一段时间但找不到答案......所以我在这里问: JPA 2.0(我使用带有oracle DB的OpenJPA)是否真的需要DB中的任何外键约束?
我用各种映射进行了很长一段时间的试验(@OneToOne,@ManyToMany有和没有额外的连接表,@ ManyToOne,@ OneToMany),无论有没有它,它一直工作到现在。但是我已经在网上阅读了一些答案,并在网上宣读它们是强制性的。那么什么是正确的?
提前致谢
答案 0 :(得分:3)
不,严格要求数据库中的外键。既不使用JPA,也不使用(AFAIK)任何其他技术来访问数据库。
外键用于防止将不一致的数据写入数据库。如果创建或更新数据库中的数据的软件已经合理,则永远不会违反外键,并且您不会注意到它们是否存在。
为什么你认为与JPA结合使用外键是强制性的?
答案 1 :(得分:2)
我想java JPA层根本不需要它们来生成代理,但讨论这个实际上可能是关于生产系统配置的火焰战争。
如果有人认为他们是强制性的(我是其中之一),那可能不是JPA相关的意见,而是数据库设计原则。外键强制执行数据一致性,这可能意味着操作计费系统或您正在实施的任何逻辑时的世界。另一方面,那些不愿意为此做出表现论证的人......这是一个观点问题