首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在具体的JPA类之间共享Java实现的最佳方式是什么?

在具体的JPA类之间共享Java实现的最佳方式是什么?
EN

Stack Overflow用户
提问于 2010-07-04 13:15:27
回答 2查看 727关注 0票数 0

我的J2EE应用程序中有大约10个不同的实体,它们现在共享完全相同的实现。它们都继承自已注释为@MappedSuperclass的同一通用抽象类,但该类不包含我在所有具体子类中重复的实现。

如果可以,我会将所有不同的字段和集合放在这个抽象超类中,并因此将实现方法也放在那里--所有这些都放在一个位置,而不是10个。

虽然我通常倾向于委托实现继承,但由于JPA的另一个限制,即不能将实体嵌入到集合中,因此使用委托的想法也不起作用。

当我只有3-4个这样的实体和2-3个方法时,这不是什么大问题,但现在我有大约10个--大约7-8个方法each...and其中一些方法变得非常复杂。我使用的“剪切-复制-粘贴”继承真的很糟糕。

还有没有别的好点子?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-07-06 15:15:10

事实证明,您可以使用实现继承或委托,只要您确保对JPA批注使用属性访问模式。我对JPA注释使用字段访问模式,这给我带来了无休止的痛苦,因为我不能注释泛型字段类型。

然而,使用属性访问模式,我只需创建我的通用抽象实现,而不是将其注释为实体、mappedsuperclass、embeddable或其他任何形式。这样,JPA就会忽略它。然后,在具体的子类中,我根据需要创建了受保护的getter和setters方法,并在这些方法上添加了JPA注释。

事实证明,它看起来很简单。

票数 0
EN

Stack Overflow用户

发布于 2010-07-04 14:28:36

  1. 仔细检查这些“限制”是否真的适用于您的JPA提供者。我已经用集合嵌入了对象,而且(使用Hibernate)还不错。我已经有了一个带有映射字段的@MappedSuperclass
  2. 您可以尝试省略@MappedSuperclass,并使用适当的继承层次结构生成超类abstract@Entity
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3173800

复制
相关文章

相似问题

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