簡體   English   中英

JPA實體的JAXB Factory

[英]JAXB Factory for JPA entities

在我以前的大多數項目中,我都有兩個域模型,一個帶有JAXB注釋,另一個帶有JPA注釋。 我知道它們可以組合成一個模型,並且在同一個類中具有兩個注釋,但是根據我的經驗,總是會得出將這種方法分開的結論。 單獨方法的另一個優點是可以使用XSD創建JAXB類,並可以輕松地從其他項目鏈接到XSD中。

在大多數情況下,我需要工廠類能夠靈活地創建實體的JAXB表示形式,例如

public class UserFactory
{
  public UserFactory(User queryUser, String lang)
  {
     this.queryUser=queryUser;
     this.lang=lang;
  }

  public JaxbUser getUser(JpaUser jpaUser)
  {
     JaxbUser jaxbUser = new JaxbUser();

     if(queryUser.isSetId()){jaxbUser.setId(jpaUser.getId());}
     if(queryUser.isSetEmail()){jaxbUser.setEmail(jpaUser.getEmail());}

     if(queryUser.isSetRoles())
     {
       RolesFactory f = new RolesFactory(queryUser.getRoles(),lang);
       jaxbUser.setRoles(f.getRoles(jpaUser.getRoles()));
     }
     return jaxbUser;
  }
}

我使用單獨的模板queryUser和支持不同語言的實體所需的lang創建一個UserFactory。 在針對特定字段或其他工廠的結果創建期間檢查模板,並創建結果對象。 查詢是在XML文件中定義的,如下所示:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<query lang="en">
  <user id="1">
    <roles>
      <role code="code"/>
    </roles>
  </user>
</query>

盡管保留了兩個域模型和工廠類的所有缺點,但通過這種方法,我擁有一個強大而靈活的工具來創建自定義XML。 我知道有很多我從未聽說過的可用框架或庫,所以這里是我的問題:

是否有類似我的方法的可用方法?

基本上有兩種選擇:

  • 同一類上的JPA和JAXB批注(請參見Hyperjaxb3DataNucleus
  • 或者,您保持分離並編寫代碼以將一個映射到另一個

我個人認為跨模型映射代碼沒有太多附加值。 工廠的用法似乎也不太創新,這只是編程技術的問題,您可以使用編程技術將它們相互映射。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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