JPA:我应该从表生成实体还是从实体生成表?
总之,我工作的一个新的项目比较大的一个......许多表,许多协会,inheretence ....(到目前为止我创建了UML & MCD)JPA:我应该从表生成实体还是从实体生成表?
我想知道什么是从这一步开始的最佳方式:我应该手动创建数据库,然后使用JPA生成实体,还是应该先手动创建实体,然后生成我的数据库?什么是最好的办法做到这一点,以便我可以避免更大的问题...
这取决于:-)。
- 如果您的应用程序“拥有”数据库(是唯一的用户),将数据库视为实现细节并让JPA创建它通常是有意义的。这样,您不必惹SQL,并且数据库始终匹配JPA期望的内容。如Essex Boy的答案所述,这对于测试等场景也很有用。
- 如果数据库已经存在,或者打算与其他应用程序共享,那么您的选择已经完成 - 您必须使用那里的内容(并小心改变它)。
- 数据库结构可能存在外部约束。也许您必须使用存储过程,或者使用特定的数据库命名约定,或者在实施约束的更新期间使用工具进行模式迁移。在这种情况下,您需要详细控制数据库结构,这通常意味着您必须使用SQL自己创建它。
因此,检查你正在工作的约束,然后决定。
谢谢!我决定去根据你的答案从实体生成数据库。 – cimecut
我强烈建议你让实体生成表。
这也将有助于测试和开发,例如,您可以使用为每个测试构建和拆卸的H2数据库。
我甚至不看数据库,直到一个项目合理进展。
JPA实体可以在没有任何表或列名的情况下开始生活,随着项目的进步,列和表名可以同意,而不会对其余代码产生任何影响。
在最后的集成阶段细微的变化可以到实体JPA注解制成允许用于Oracle,DB2等特定数据类型的异常
应用程序应该负责自己的数据库。这对于一个新项目尤其重要。
模式生成(由ORM层完成)是一种便利的功能,但是生成的模式应该在每一种情况下都由数据库(DBA)坚定的人员在生产之前进行验证。即使首先创建模式,然后创建适当的ORM映射,也是更高性能/可靠的方式。
真的,我应该给该数据库创建代码(我将在以后产生以来我已经决定要生成的entites DB)到应用投产前的DBA ...它通常会这样的,大中旬范围内的公司 – cimecut
来自实体或来自实体的表格。切勿从数据模型创建对象模型。始终从域分析中创建对象模型。 JPA是而不是这是一个数据操作工具,它是一个对象操作工具。
如果您不掌握数据库模式,那么您只需要希望它支持对象模型,并找出如何将对象模型映射到关系模型。这就是为什么它被称为对象到关系映射(ORM),而不是关系到对象映射。
绝不会让数据模型驱动您的对象模型。
其产生DB liquibase脚本,然后生成从DB – ByeBye
实体,我决定去与从实体生成数据库,它更有SENS现在对我,因为我没有使用任何存储过程或类似的事情......除了我我没有为我的应用程序创建表格。请参阅已接受的答案以获取更多关于我为什么决定参加此次审核的信息。谢谢@ByeBye – cimecut
我不会让JPA管理我的数据库结构,因为它的所有标准选项会破坏您的数据。无论是从表格生成实体还是手动生成实体,这都是一个偏好问题。 – coladict