Hibernate:DDL< - >班级,哪个方向?

时间:2011-12-14 14:30:54

标签: hibernate

您认为使用Hibernate的“正确”方式是什么?要在对象级别(类)设计模型,然后从中生成DDL?要在关系级别(表)设计模型,然后从中生成类?

每种方法的优缺点是什么?

在首先创建DDL的情况下,您可以从中生成类,然后您可以在类中添加一些代码,当您想要向表中添加新列时会发生什么,例如,您必须修改分别是。手动? Hibernate是否提供了修改类的工具而无需完全重新生成类(删除自定义代码)?

由于

2 个答案:

答案 0 :(得分:4)

我更喜欢以下方法:

  • 在项目的早期阶段,您可以设计类并从中生成DDL,以便您可以根据需要轻松更改域模型。

    但是,在设计域模型时,您仍需要牢记数据库架构,以避免创建会导致数据库访问效率低下的模型。

  • 随着项目的发展和域模型变得更加稳定,您可以开始将数据库模式维护为单独的工件。它简化了索引和约束的微调。

    在此阶段,您需要手动使架构与域模型保持同步,但无论如何都需要它,因为Hibernate提供的自动DDL更新不够可靠,不能用于生产,因此您需要跟踪您的更改并为他们编写迁移脚本。

答案 1 :(得分:2)

我首先生成域类,然后使用Hibernate创建DDL。

这是因为这允许您指定表(ManyToOne等)之间的关联,这将导致创建适当的外键。您还可以使用注释指定将在生成的DDL中反映的唯一索引。

但是,一旦项目稳定,在更改域类后,不应使用hibernate升级架构。