Zdravím,
taky používáme Dozer, sice ne na klonování, ale na mapování Entit na
DTO, ale ze svého principu to v pohodě na klonování použít jde, jak je
uvedeno kolegou níže.
SouceObject clone = mapper.map(sourceObject, souceObject.getClass());
Zatím jsme na žádný problém nenarazili.
Je možné, že ten googlecloning bude rychlejší, když se specializuje jen
na to clonování. Dozer je zase komplexnější řešení, protože umožňuje
navíc mapovat jakoukoliv classu na jakoukoliv jinou, psát si vlastní
mappery (konverze dat), atd. Navíc se mi zdá, že Dozer bude možná mít
širší komunitu uživatelů, takže bude lépe otestován a prověřen časem.
Ale nechci Vám ho nijak vnucovat, výběr je jen na Vás :).
Petr
Dne 19.7.2011 14:20, Libor Jelinek napsal(a):
Možná stačil! Mrknu na to!
A http://code.google.com/p/cloning/ někdo nepoužíváte? Můžete případně
porovnat?
Libor
Dne 19. července 2011 12:13 Petr Prikryl <[email protected]
<mailto:[email protected]>> napsal(a):
Dobry den,
dozer by Vam nestacil?
http://dozer.sourceforge.net/
http://dozer.sourceforge.net/documentation/deepmapping.html
SouceObject clone = mapper.map(sourceObject, SouceObject.class)
PP
On Tue 19 Jul 2011 11:53:41 AM CEST, Libor Jelinek wrote:
Dobrý den,
chtěl bych vytvořit hlubokou kopii instance, ale nechci pro
každou kódovat ručně složitě hluboké kopírování - hlavně
vypisovat všechny property ručně a pak stejně na něco
zapomenout. A přededně nevím ani jaké objekty obdržím. Jsou to
např. JPA entity o kterých předem nevím.
Vždyť by deep klonování asi šlo provést pomocí Reflection API.
Existuje nějaká knihovna, která to již řeší?
<flamewar>Krom toho mi to přijde jako příklad inovace, která v
Javě mohla být už roky. Nejspíš pomocí nějaké anotace
@DeepCloneable... A ještě by to chtělo do Javy přidat nějaké
@Immutable jako má Groovy, aby to chudák programátor znova
nemusel hlídat sám.</flamewar>
Nechci odkazy z Googlu (to jsem uz zkusil a cosi existuje),
ani tipy přes de/serializaci jaké jsem též našel. Obojí je
příliš pracné a "error-prone"... Ale spíš váš názor a vaší
zkušenost, jestli něco používáte sami či jak to řešíte Vy.
Díky
Libor
PS: Prosím přednostně o reakce na otázku samotnou. A potom,
jak je Java špatná a jazyk XYZ lepší (a tomto asi vážně bude) :-)
--
Petr