Java JPA/Hibernate:子类型与策略;图案';
下面是一个JPA注释的类型层次结构,其中所有数据字段(以及相关的getter和setter)都是超类型的成员,以及用于实现业务逻辑的抽象方法。有任意数量的子类型实现这些抽象方法而不添加数据成员,因此我们使用单表继承策略,因此我们只需要数据库中的一个表来支持此类型层次结构 我这样做是因为,根据数据的内容,必须实现不同的行为才能实现最终目标Java JPA/Hibernate:子类型与策略;图案';,java,hibernate,jpa,domain-model,anemic-domain-model,Java,Hibernate,Jpa,Domain Model,Anemic Domain Model,下面是一个JPA注释的类型层次结构,其中所有数据字段(以及相关的getter和setter)都是超类型的成员,以及用于实现业务逻辑的抽象方法。有任意数量的子类型实现这些抽象方法而不添加数据成员,因此我们使用单表继承策略,因此我们只需要数据库中的一个表来支持此类型层次结构 我这样做是因为,根据数据的内容,必须实现不同的行为才能实现最终目标 @实体 @桌子 @继承(策略=InheritanceType.SINGLE_表) @鉴别器柱 公共抽象类超实体{ //几个字段以及getter和setter .
@实体
@桌子
@继承(策略=InheritanceType.SINGLE_表)
@鉴别器柱
公共抽象类超实体{
//几个字段以及getter和setter
...
//业务逻辑的抽象方法声明
...
}
@实体
@鉴别器值(“某些值”)
公共类SomeSubtype扩展了SuperEntity{
//抽象方法的实现
...
}
这是对JPA/Hibernate中鉴别器列概念的曲解吗
一位同事认为,由于数据的结构不会因子类型而异,因此抽象方法和相应的实现应该转移到类似策略模式的方法中。他的想法更好吗?更好是非常主观的。听起来组合和策略是一种有效的选择,这可能会使您不需要为业务逻辑的每个实现映射另一个实体 抛开JPA和hibernate不谈,我读过的每一本OO设计书都以“支持组合而不是继承”作为分享行为的开头
假设您有一个数据对象,您不能在每个非休眠策略之间共享该对象并对其进行操作吗?不管怎么说,少点JPA/hibernate对眼睛来说更容易。更好是非常主观的。听起来组合和策略是一种有效的选择,这可能会使您不需要为业务逻辑的每个实现映射另一个实体 抛开JPA和hibernate不谈,我读过的每一本OO设计书都以“支持组合而不是继承”作为分享行为的开头
假设您有一个数据对象,您不能在每个非休眠策略之间共享该对象并对其进行操作吗?不管怎么说,少用JPA/hibernate对眼睛来说是比较容易的。我曾经研究过使用组合,但它会让服务层的某些事情变得有点混乱。然而,我想我越来越同意你和我的同事的看法,我上面的继承计划并不好。我将进一步研究组合方法——谢谢你的回答。我已经研究过使用组合,但它会使服务层的某些事情变得有点混乱。然而,我想我越来越同意你和我的同事的看法,我上面的继承计划并不好。我将进一步研究作文方法——谢谢你的回答。