2014-01-26 186 views
1

搜索了很长一段时间,但找不到答案......所以我在这里问: JPA 2.0(我使用OpenJPA和oracle数据库)确实需要DB中的任何外键约束?JPA是否需要外键

我用各种映射(@OneToOne,@ManyToMany有和没有额外的连接表,@ManyToOne,@OneToMany)进行了很长时间的实验,并且它在没有它们的情况下一直工作到现在。但是我已经在网上读了一些内容,说他们是强制性的。那么什么是正确的?

在此先感谢

回答

2

不,数据库中的外键不是严格要求的。无论是使用JPA还是使用(AFAIK)任何其他技术访问数据库时。

有外键可以防止不一致的数据写入数据库。如果创建或更新数据库中的数据的软件已经很健全,那么外键永远不会被违反,并且如果它们在那里或者没有,你将不会注意到。

为什么你认为与JPA结合使用外键是强制性的?

+0

他们出现在很多教程和许多映射疑难解答的答案。如果JPA在没有他们的情况下干得不错,后者让我感到不安全...... – swarley

2

我想在Java JPA层不需要它们都以生成代理,但在讨论这其实就是潜在的大约生产系统配置的口水战。

如果有人认为他们是强制性的(我是其中之一),它可能不是与JPA有关的意见,而是数据库设计原则。外键可以强化数据一致性,这可能意味着全球运营计费系统或您正在实施的任何逻辑。另一方面,那些不愿意为此提交性能参数......这是一个观点问题