首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JPA/Hibernate:子类型与策略“模式”

JPA/Hibernate:子类型与策略“模式”
EN

Stack Overflow用户
提问于 2011-09-06 11:00:06
回答 1查看 1.2K关注 0票数 1

下面是一个带JPA注释的类型层次结构,其中所有数据字段(以及相关的getter和setter)都是超类型以及实现业务逻辑的抽象方法的成员。在不增加数据成员的情况下,有许多子类型可以实现这些抽象方法,因此我们使用单表继承策略,因此我们只需要数据库中的一个表来支持这种类型层次结构。

我之所以这样做,是因为根据数据的内容,必须实现不同的行为才能实现最终目标。

代码语言:javascript
运行
复制
@Entity
@Table
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn
public abstract class SuperEntity {
  // Several fields and getters and setters
  ...
  // Abstract method declarations for business logic
  ...
}

@Entity
@DiscriminatorValue("some value")
public class SomeSubtype extends SuperEntity {
  // Implementations of abstract methods
  ...
}

这是对JPA/Hibernate中鉴别器列概念的颠覆吗?

一位同事认为,由于数据的结构从子类型到子类型都不会改变,因此抽象方法和相应的实现应该移动到类似于策略模式方法的东西中。他的想法更好吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-06 14:15:06

更好是非常主观的。听起来组合和策略是一个有效的替代方案,这可能会使您不必为业务逻辑的每个实现映射另一个实体。

抛开JPA和hibernate不谈,我读过的每一本OO设计书籍都以“偏爱组合而不是继承”作为共享行为的开头。

假设您有一个数据对象,难道您不能在每个非hibernate策略之间共享该对象并对其进行操作吗?无论如何,拥有更少的JPA/hibernate对眼睛来说是更容易的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7314509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档