JPA实体的JAXB工厂

| 在我以前的大多数项目中,我都有两个域模型,一个带有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;
  }
}
我创建了一个带有单独模板with1ѭ和所需的
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批注(请参见Hyperjaxb3或DataNucleus) 或者您将其分开,然后编写代码以将一个映射到另一个 我个人认为跨模型映射代码没有太多附加值。工厂的用法似乎也不太创新,这只是编程技术的问题,您可以使用编程技术将它们相互映射。     

要回复问题请先登录注册