以敏捷/迭代方式构建数据库模型+ jpa层的更好方法是什么?

时间:2018-03-27 10:45:40

标签: hibernate jpa

准确地说,在上下文中,我正在处理一个相对较小但正在增加的数据库(约20个表)的单个开发实例。

我试图以这种方式迭代:

  1. 在数据库设计器工具中应用新要求
  2. 生成SQL脚本
  3. 删除现有数据库并执行完整脚本
  4. 执行填写初始数据的脚本(手写)。
  5. 使用Dali + EclipseLink工具生成JPA实体(单击工具以限制实体之间的导航并选择id生成方法)。
  6. 将生成的每个实体与之前的版本进行比较以取回我的自定义(例如,java.util.Date => java.time.LocalDateTime,但也需要toString,equals,hashcode方法)。
  7. 如果我可以自定义JPA实体生成本身并保存这一代定制以供进一步生成,那么这种迭代方式将非常有效。

1 个答案:

答案 0 :(得分:0)

好的,我认为尝试自定义JPA实体生成器(从表生成实体)是错误的。

要在数据模型和数据层上迭代地处理从开始就不知道所有需求的问题,诀窍是使用生成器而不进行自定义,并将生成的类放在源代码控制之下。

您只能自定义这些生成的类的副本以满足您的需求(类型,导航,其他方法/枚举,...)。此副本将成为您的持久层。

当数据模型发展(新表,新属性,重命名,类型更改)时,您使用生成器并将现有生成的类替换为新生成的类。这样,您的源代码控制系统(可能是git)可以准确地告诉您哪些类是新的,哪些类已被删除以及您的持久层的哪个类需要哪些修改。

这是迄今为止我发现的最可靠,最有效的做法,可以迭代地处理数据模型,保留第一代使用生成器的好处。