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