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