2

使用 JPA 时哪个更好,尤其是在开始一个新项目时?从设计实体开始,然后让 JPA 生成数据库,还是从数据库模式开始,让工具生成实体类?

我是一家小公司的一员。我既是软件开发人员又是 DBA。我对应用程序和数据库设计有完全的自由

我刚刚开始这个项目

4

6 回答 6

4

如果你想设计一个数据库,那么从模式开始。如果你想写软件,那就从实体开始。ORM 的目的是让您考虑对象模型而不必担心存储它的数据库,因此这种类型的问题实际上通过暗示领域之间的交叉来混淆问题。您是软件开发人员还是 DBA?这比您使用 JPA 的事实要重要得多,这将为您确定正确的答案。

于 2013-02-15T05:44:46.707 回答
1

嗯——也没有?JPA 的强大之处在于您不必从另一个生成一个!如果您已经有了实体或数据库模式,那么生成实体或数据库模式可能是一个很好的起点;但生成的东西不是你想要长期使用的东西。

您不能简单地设计映射的一侧而不考虑另一侧。如果您将与其他应用程序共享数据库,则需要更加重视数据库模式。如果您的应用程序有一个复杂的模型,您将希望首先关注对象模型,让它由您在开发应用程序时发现的用例驱动。

我倾向于首先从对象模型开始(即使没有后备数据库开始),因为这使我能够更早地看到应用程序的运行情况并了解我们真正想要构建的内容。但是与数据库的集成必须早点而不是晚点发生;因为它的约束会很快地强加在你的对象模型上。:-)

于 2013-02-15T15:06:42.010 回答
1

It depends on one's needs . Usually in a product development environment , there are different teams which work on database design , interface design and implementation . So in that case , you have no option than generating the JPA entities from the already database design. Secondly , if you are starting from the scratch and you know what are you upto then you can probably start writing your own entities (java class) and then generate the database from that.

于 2013-02-16T13:17:07.777 回答
0

最好选择数据库方案。因为某些功能在 JPA 生成的数据库中不可用。在 JPA 中,我们不能为我们的列提供默认值。在此处查看JPA 中允许的属性。

于 2013-02-15T03:24:12.260 回答
0

由你决定。是自上而下还是自下而上的方法。如果此模式是您的应用程序独有的,请查看您的团队成员和分析师如何理解 ORM 或 DB。根据我的经验,分析师对表格的理解更好。但是,如果它们适合在类或 UML 图方面进行讨论,请使用 JPA。此外,还要考虑您的 DBA 和构建工程师的观点。

于 2013-02-15T03:26:46.347 回答
0

If you have complete flexibility and are not restricted to a DB schema and want a clean object model in your java application then start with with the model first and generate the schema from the model. This also allows you to generate clean JSON representations from the clean model to serve as on-the-wire format for your objects using technologies like Jackson (or GSON).

Doing DB Schema first and reverse engineering model classes from it will result in relational concepts seeping into your model classes resulting in poor (polluted) model.

In summary do model first unless your hands are tied and you must map to some existing schema.

于 2016-09-27T18:52:35.280 回答