药膏!
关于 SO的另一个问题/答案的一部分(以及声称相同的其他陈述):
如果您通过 JPA 更新数据库模式(虽然通常不是一个好习惯)
你真的不应该使用 JPA 实现来生成你的数据库模式吗?
无论如何,我必须自己建模实体和关系。我还需要定义约束,例如 notnull、主键和外键、数据类型和大小。
假设使用中的 JPA 实现在其 DDL 模式创建代码中没有任何缺陷,并且假设我确实正确指定了所有 JPA 约束、关系等,那么 JPA 实现创建的数据库模式应该完全相同 - 如果不是更好-作为我自己手工制作的架构,对吗?
这不包括“特殊情况”,例如(业务逻辑)特定的 INSERT 触发器等,因为这些完全不能由 JPA 实现生成(据我所知,如果我错了,请纠正我)。
您对此有何看法?
我目前首先手工制作我的数据库模式,然后设置 JPA 约束、关系等,并让 JPA 实现也创建一个数据库模式。然后我比较这两个模式,看看我是否正确地完成了设置。这当然意味着我还必须指定相同的列名等,就像我为我的手工架构所做的那样。
使我的问题更准确;我不会盲目相信 ORM 框架会为我生成模式。我宁愿对架构在我的脑海中的外观有所了解,然后配置框架以匹配它。
我想您只能手动创建更多/最有效的模式,但毕竟我需要(或者更确切地说想要)将它们与 ORM 框架一起使用。因此,虽然我不应该这样做,但无论如何在创建数据库模式时,我都需要牢记 ORM 框架的局限性。
因此,由于我使用 ORM 框架是为了不必关心 RDBMS 的细节,所以让我的应用程序使用 RDBMS 特定的 DDL 创建模式有什么意义?
如果我必须使用一些现有的和外来的模式,我不需要(重新)创建模式,因为我可能无法使用这样的通用工具作为 ORM 框架。