čtvrtek 24. ledna 2008

CGLIB a metoda equals

Další kapitola do tolik oblíbené knihy "Ze života s Hibernate".
Hibernate zhusta používá knihovnu CGLIB, která slouží ke generování tříd za běhu programu. Místo vašich vlastních objektů tak Hibernate občas vrátí tento za běhu vygenerovaný proxy objekt.
Problém může nastat, pokud v metodě equals() příslušného objektu použijeme porovnání tříd jako například v metodě, kterou vytváří Eclipse:
if (getClass() == obj.getClass()) ...
V případě proxy objektu, který původní objekt rozšiřuje, tato podmínka neplatí a metoda equals() pak nefunguje.
Staré dobré if (obj instanceof Třída) ... funguje samozřejmě bez problémů.

Žádné komentáře:

Okomentovat