我借用C++的「切片」意思。如何「切片」一個POJO
比方說,我哈瓦是威盛的Hibernate持久化一個簡單的POJO:
class Person {
private long id;
private String name;
...
// getters and setters here
...
}
現在,當我從數據庫中檢索對象,我知道這是「儀表」由Hibernate(其真正的班是一個人 - 派生自動生成)。我想將它轉換回「普通」人物。例如,將使用Tnat將對象提交給XStream,並將結果僅包含Person包含的結果。
我可以通過定義一個拷貝構造函數來實現,但我不想爲每個ORM類編寫拷貝構造函數的麻煩(更不用說違反DRY原則了)。
所以我在想,如果
a)是已經有一個Java的lib是不是嗎? b)如果不是,使用反射寫一個是否可行?
在(b)的情況下,任何recomendations /準則/代碼骨架將不勝感激。
這是一個完美的解決方案。它甚至解決了我沒有提到的另一個問題,即一對多關係需要表示爲持久對象中的容器和XML-ed對象中的數組。非常感謝。 – 2010-07-22 00:43:52
Dozer的真正目的是將TypeA映射到TypeB,並且能夠將該映射存儲在XML配置中而不是Java代碼中,所以它對於這種使用來說也是完美的(真正從一種類型映射到另一種類型)。 – 2010-07-22 00:57:25