ich lade ganz gewöhnlich ein Object aus der Datenbank.
Code:
public Entity getEntity(long id)
{
Session session = getSession();
Transaction t = session.beginTransaction();
Entity e = (Entity) session.get(Entity.class, id);
t.commit();
return e;
}
und speicher eine Referenz darauf in einer SessionBean.
Nun lade ich aus einer anderen Bean, bspw 'SessionBean2', nochmal getEntity(die_selbe_id);
Wie schon in SessionBean1, erstell ich in SessionBean2 eine Referenz.
So... nun hab ich eigentlich erwartet, dass Hibernate beim zweiten Aufruf selbst erkennt, dass dieses Objekt bereits geladen ist. Und referenz1 und referenz2 auf die selbe Instanz zeigen.
Hab das aber mal getestet und wie es ausschaut hatte ich mich geirrt.
Wenn ich das Object über referenz1 ändere wirkt sich das nicht auf das Objekt der referenz2 aus.
Sprich session.get() erstellt mir jedes mal eine eigene Kopie.
Wie lässt sich das verhindern? (ohne selbst eine HashMap o.ä als Cache anlegen zu müssen. )