外键在JPA或数据库Schema中级联

时间:2013-09-04 21:15:28

标签: sql database hibernate jpa database-design

我有一个单独的脚本,为我们支持的每个数据库创建数据库和表。我使用JPA来操作数据库中的数据,但JPA不会创建数据库或表。

我想在具有cascade属性的新表中添加外键,以便在父表中删除行时,子表中的相应行也会被删除。

我知道在JPA中执行此操作所需的注释,但是我可以在用于创建数据库的脚本中创建外键和级联语句。

我的问题是,由于我使用单独的脚本来创建数据库表,我可以在脚本中添加外键/级联语句,然后忽略所有JPA关系注释吗?在数据库脚本和JPA代码中添加此信息是否有优点/缺点?

1 个答案:

答案 0 :(得分:1)

您应始终进行2级检查。如果你不使用JPA的功能,那么它会大大浪费JPA提供的功能。你应该确保你的JPA关系尽可能地与你的数据库关系相匹配。它可以帮助你很多,因为JPA可以缓存数据,甚至可以防止对DB的不必要的调用。 例如,如果你有一个非空约束并且你没有JPA约束,那么你的数据库必须完成所有工作并抛回异常。 通常在应用程序中,网络和数据库是应用程序中最慢的因素。所以你应该尝试模仿JPA中的约束,以避免不必要的开销。 同样使用这些约束,您可以形成双向关系,并拥有相关实体的集合以及更多此类优势。