[Java lista] Spring/Eclipselink - izolációs szintek

Auth Gábor auth.gabor at javaforum.hu
2011. Feb. 8., K, 21:26:30 CET


Hi,

2011. február 8. 21:05:59 dátummal Mariák Kálmán az alábbiakat írta:
> No de a persist-ek után egy findById metódussal (JPQL) olvasom újra ki
> az entitást.

  A user meg is van... a userExtension is megvan. A userExtension össze van 
kapcsolva a user-el. A user viszont nincs összekapcsolva a userExtension-el. 
:)

  Mit csináltál először:
userExtension.setUser(user);
em.persist(user);
em.persist(userExtension);

  Másodszor:
userExtension.setUser(user);
em.persist(user);
em.persist(userExtension);
user.setExtension(userExtension);

  Az első esetben a user.setExtension(userExtension) nem került meghívásra, az 
értéke null lesz. Ha lekérdezed a userExtension értékét, akkor persze, hogy 
meglesz, az em.persist nem befolyásolja érdemben az entitás bean-ek tartalmát, 
leszámítva az @Id feltöltését.

  Nézd meg, mit csináltál:
userExtension.setUser(user);
user.getExtension();

  Csoda, hogy null? :)

  Második esetben:
userExtension.setUser(user);
user.setExtension(userExtension);
user.getExtension();

  Csoda, hogy itt visszakapod a beletett értéket? :)

> userExtension.setUser(user); Ez a sor azért kell, hogy a kapcsolat létre
> tudjon jönni a két entitás között. A user-ből igazából csak a userId
> kell.

  Nem, ezzel csak az egyik irányt állítod be. Amikor valamikor később 
beolvasod az entitást, akkor lehet, hogy feltölti a JPA mindkét oldalt, de 
amikor lemented, akkor neked kell gondoskodni az összerendelésekről.

  A findById tipikusan cache-ből tölti be az entitás bean-t, tehát nem fogja 
feltölteni a JPA azokat a mezőket, amelyeket nem töltöttél fel.
-- 
http://www.javaforum.hu -=- http://www.enaplo.hu
Auth Gábor -=- http://www.javaforum.hu/web/10/authgabor
--------- következő rész ---------
Egy csatolt HTML állomány át lett konvertálva...
URL: http://javagrund.hu/pipermail/javalist/attachments/20110208/002a3880/attachment.html 


További információk a(z) Javalist levelezőlistáról