在我之前的大部分项目中,我有两个域模型,一个使用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
创建了一个UserFactory,为支持不同语言的实体创建了所需的lang
。在为特定字段或其他工厂创建结果期间检查模板,并创建生成的对象。查询在XML文件中定义,如下所示:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<query lang="en">
<user id="1">
<roles>
<role code="code"/>
</roles>
</user>
</query>
使用这种方法,我有一个强大而灵活的工具来创建自定义XML,尽管维护两个域模型和工厂类的所有缺点。我知道有很多框架或库可供我从未听说过,所以我的问题在这里:
是否有类似于我的方法的可用内容?
答案 0 :(得分:0)
基本上有两种选择:
我个人认为跨模型映射代码没有太大的附加价值。工厂的使用似乎也不太具有创新性,它只是一个编程技术的问题,你用它来映射到另一个。