1
在我以前的大部分项目中,我有两个领域模型,一个使用JAXB注释,另一个使用JPA注释。我知道他们可以合并成一个模型,并且在同一个班级都有两个注释,但是根据我的经验,这种方法的权衡总是得出结论来区分它们。独立方法的另一个优点是能够使用XSD创建JAXB类,并轻松链接来自其他项目的XSD。JPA实体的JAXB工厂
在大多数情况下,我需要工厂类能够灵活地创建我的实体的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,尽管工厂类维护两个域模型的所有缺点和。我知道有很多框架或库可用,我从来没有听说过,所以在这里我的问题:
是否有可用的东西类似于我的方法?
显然,DataNucleus允许您只拥有JPA实体并从它们生成XML(即保留到XML,使用JAXB,使用JPA注释)......无论您是否还包含JAXB注释。不知道这是否会对你的情况有好处,但是如果不知道它的存在,我会提及它 – DataNucleus 2011-06-15 18:55:03