![](/img/trans.png)
[英]Is it possible to mix orm.xml definitions with annotations when using JPA/hibernate?
[英]Spring JPA Annotations & ORM.xml alternative?
我想以一種我可以盡可能簡單地改變Frameworks的方式設計我的微服務。 所以我有一個接口,可以在將來改變一切,但我不能為實體做到這一點,因為我不知道如何使用JPA + Hibernate而不使用@Entity
/ @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-Annotations? 所以,如果有一些東西讓JPA貶值我可以輕松切換(只需更換1個適配器或類似的東西)
Ty先進
根據我對JPA的理解和經驗,在這個問題上不可能擁有兩全其美。 JPA直接依賴於文件內的Annotations。 我看到的最好的替代方法是為每個創建兩個單獨的.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,在這種情況下你可以進行搜索和替換。 搜索和替換可能是您的救星。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.