簡體   English   中英

Spring JPA Annotations和ORM.xml替代?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM