为了账号安全,请及时绑定邮箱和手机立即绑定

我如何支持源代码不属于我的类的 jpa 数据库序列化?

我如何支持源代码不属于我的类的 jpa 数据库序列化?

qq_遁去的一_1 2023-03-02 16:32:48
如果我有一个实体,我想保留到 JPA2 中的数据库,我只需添加 @Entity 注释,以及指定其关系的任何其他注释,等等。我有几个来自我不拥有的依赖项的类,我想用它们来做这件事。我在想一些想法,但我对其中任何一个都不是很满意。创建一个“空”子类,将对所有内容的调用委托给真正的类。空子类将是持有配置注释的子类。我不确定这是否可行,因为我认为您需要向超类添加注释。使用属性转换器。如果我不关心使用我为关系导入的那个实体,这就可以了。我现在已经在为一些枚举做这个了。我想我可以用persistence.xml? 但我想不惜一切代价避免这种情况。只是举另一个我正在尝试做的例子,在 Spring 中,您通常通过在 bean 上放置 @Componeont 并使用其他 JPA 注释装饰类来配置 bean。但是,如果您不拥有该类,则 Spring 有一个带有 @Bean 注释的简单机制,您可以在该方法中创建和配置该类,@Configuration 类调用该方法以获取对该实体的引用。通过这种方式,您可以将第三方库用作 bean,而无需访问源代码。
查看完整描述

2 回答

?
慕神8447489

TA贡献1780条经验 获得超1个赞

首先,无论你是否拥有你想要持久化的类,你都不应该用 注释你的业务实体@Entity。这背后的原因很简单:数据库是一个 I/O 通道。I/O通道是一个细节。您的业务逻辑应该独立于细节。

您应该将业务实体映射到 DTO,该 DTO 传递给 DAO,DAO 然后将其映射到数据库实体并持久化。不要相信我这一点,这个意见实际上源于鲍勃叔叔

所以答案是:将实体转换为 DTO,将此 DTO 传递给相应的 DAO,后者将其再次转换为某个数据库对象并持久化。


查看完整回答
反对 回复 2023-03-02
?
杨__羊羊

TA贡献1943条经验 获得超7个赞

我最终使用 orm.xml 将 JPA 映射提供给我不控制其源代码的 java 类。



查看完整回答
反对 回复 2023-03-02
  • 2 回答
  • 0 关注
  • 85 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信