[Java lista] Spring/Eclipselink - izolációs szintek
Bartuszek Viktor
bartu at rhodeus.hu
2011. Feb. 8., K, 21:27:44 CET
2011.02.08. 21:05 keltezéssel, Mariák Kálmán írta:
> On Tue, 2011-02-08 at 20:21 +0100, Auth Gábor wrote:
>> Hja, ha mindkét oldalon van set, akkor neked kell kezelni mindkét
>> bean
>> esetén... eddig csak az egyik oldalon állítottad be. Csoda nem fog
>> történni,
>> hogy beállítódjön mindkettő bean-ben. :)
> No de a persist-ek után egy findById metódussal (JPQL) olvasom újra ki
> az entitást.
Nem jelent semmit. jpa előszedte az entitást (vagy "megjegyezte" persist
esetén) és kész.
Az utána not managed állapotba kerül, és nem foglalkozik a frissen
tartásával, neked kell róla gondoskodnod.
Kérsz egy példányt, van neki, odaadja (de nem frissíti). Próbáld ki,
nagyrészt a már kikért entitások újra keresésénél el sem jut a db-ig a
query-d. Ezért kell újra managelt-é tenni merge-el. Eclipse debug-ja
gyönyörűen mutatja is ezt egyébként, mikor egy változód tartalma
változik, sárga lesz, kövesd le ezeket, hogy mikor történik valóban
értékadás ezek esetén.
> 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.
Ez csak akkor igaz, amikor kikéred a user-t a db-ből. Ha van referenciád
egy meglévőre (egyértelműen nem akármelyikre :D), azt fogod kapni, mint
fentebb írtam, jpa nem fogja a kapcsolatokat lekövetni, ha külön nem
kéred erre.
> Az első osztályban meghívott userDao.findUserById metódus tartlama:
> @Override
> public User findUserById(Long id) {
> Query q = em.createQuery("SELECT u FROM User u WHERE u.id = :id");
Erre van az em.find metódus, felesleges megírnod :)
<T> T find(Class<T> entityClass,
Object primaryKey)
http://download.oracle.com/javaee/5/api/javax/persistence/EntityManager.html#find%28java.lang.Class,%20java.lang.Object%29
Remélhetőleg nem írtam túl nagy baromságokat, én így tapasztaltam, így
aztán nagyon könnyen előfordulhat, hogy nem így van :)
v
További információk a(z) Javalist levelezőlistáról