Hibernate 休眠:DDL<-&燃气轮机;班级,哪个方向?

Hibernate 休眠:DDL<-&燃气轮机;班级,哪个方向?,hibernate,Hibernate,您认为使用Hibernate的“正确”方式是什么?在对象级别(类)设计模型,然后从中生成DDL?在关系级别(表)设计模型,然后从中生成类 每种方法的优缺点是什么 在首先创建DDL的情况下,您可以从中生成类,然后可以在类中添加一些代码。当您想向表中添加一个新列时会发生什么情况?例如,您必须分别修改该类。手动?Hibernate是否提供了一个工具来修改类而不完全重新生成类(删除自定义代码) 谢谢我更喜欢以下方法: 在项目的早期阶段,您设计类并从中生成DDL,这样您就可以根据需要随时轻松地更改域模型

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

每种方法的优缺点是什么

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


谢谢

我更喜欢以下方法:

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

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

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

    在这个阶段,您需要手动使您的模式与域模型保持同步,但无论如何都需要这样做,因为Hibernate提供的自动DDL更新对于在生产中使用来说不够可靠,所以您需要跟踪更改并为其编写迁移脚本


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

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


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

+1。如果您知道Hibernate是如何工作的,那么设计实体或设计表或多或少都是一样的,您永远不要忘记,您的对象必须以某种方式映射到表,并且查询必须是高效的。