gpt4 book ai didi

java - Spring JPA 注释和 ORM.xml 替代方案?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:07:26 33 4
gpt4 key购买 nike

我想以一种可以尽可能轻松地更改框架的方式设计我的微服务。所以我有一个接口(interface),用于将来可能发生的所有变化,但我不能为实体这样做,因为我不知道不使用 @Entity 就可以使用 JPA + Hibernate 的方法。/@Id .. 或声明 ORM.xml文件。有没有办法定义处理实体的配置类?

随机示例:

@Entity 
@IdClass(DemoId.class)
@Table(name = "demo",catalog="demodb")
public class Demo implements Serializable{
@Id
private long pk1;
@Id
private long pk2;
@Id
private long pk3;
@Lob
String description;

@ElementCollection(targetClass=String.class)
List<String> infos = new ArrayList<>();
}

public class DemoId implements Serializable{
private long pk1;
private long pk2;
private long pk3;
}

如何将我的实体(在本例中为 Demo )和两个类中的 JPA 注释分开?因此,如果有什么东西让 JPA 被弃用,我可以轻松切换(只需更改 1 适配器或类似的东西)

进阶

最佳答案

根据我对 JPA 的理解和经验,在这个问题上不可能两全其美。 JPA 直接依赖于文件内的注解。在我看来,您拥有的最佳选择是为每个文件创建两个单独的 .java 文件。这不是一个很好的解决方案,但我认为您不会得到更好的解决方案。

例如:文件 #1 DemoAnnotated.java

@Entity 
@IdClass(DemoId.class)
@Table(name = "demo",catalog="demodb")
public class Demo implements Serializable{
@Id
private long pk1;
@Id
private long pk2;
@Id
private long pk3;
@Lob
String description;

@ElementCollection(targetClass=String.class)
List<String> infos = new ArrayList<>();
}

文件 #2 Demo.java

public class Demo implements Serializable{
private long pk1;
private long pk2;
private long pk3;
String description;
List<String> infos = new ArrayList<>();
}

从长远来看,暂时保留注释可能会节省时间。如果您以后需要快速切换框架——这将需要重构,但您应该能够很快完成。我无法想象变化太剧烈了。可能只是一个 @Entity -> @SomeOtherName,在这种情况下你可以进行搜索和替换。搜索和替换可能是您的救星。

关于java - Spring JPA 注释和 ORM.xml 替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52670913/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com