【发布时间】:2018-06-29 10:58:40
【问题描述】:
我已经习惯了像 JPA 这样的框架在数据库行和 Java 对象之间进行对象关系映射。
但是,在我的公司中,我们使用 ORM 的专有框架,它不使用实体类来表示实体,而只是一个 java.util.Map 类,其中数据库列值映射到它们的名称。
通常,这样的地图还可以作为表示层呈现表单的模型。再次发布表单会将参数作为映射注入处理程序方法。这是 2000 年初的旧框架。
即使认为在实体类上使用映射听起来像是过时和反模式,但我实际上喜欢这个模型的“动态”性质。在地图被传递到表示层之前,您可以轻松地将任何数据添加到业务逻辑层中的地图,并且它成为表单的一部分,只需更改模板本身。如有必要,它允许您用任何东西来增强任何实体。这最终很有用,例如,如果您必须在某些条件下为某个字段显示某些通知。您只需检查条件,如有必要将通知添加到地图,如果地图中存在,则在模板中渲染它。如果我使用实体类,我将需要使用属性重构实体类接口,这甚至不是实体的真实属性。业务逻辑充满了这些特殊条件,并且不断发展。
这是一种危险的想法吗?我是否爱上了反模式?或者在复杂的业务领域中使用这种模式是否合理,这种模式有名称吗?
【问题讨论】:
标签: java jpa design-patterns orm architecture