Ez a szabály azokat a JPA törekvéseket jelöli meg, amelyek PERSIST, MERGE vagy ALL kaszkádolási stratégiát használó viszonyokkal rendelkező JPA entitásokat határoznak meg, hogy a felhasználó tudatában legyen az alapértelmezett JPA viselkedés viselkedés megváltozásának 2.0 a WebSphere Application Server V8.5 és Liberty változatban. A 8.5 változat előtt, tárolás kaszkádolásakor a rendszer ellenőrizte az adatbázisban, hogy létezik-e már az entitás. Az új alapértelmezett viselkedés, hogy ne történjen előzetes ellenőrzés és hibaüzenet az "Entitás kulcsa már létezik" perzisztencia kivétellel, ha az entitás már szerepel az adatbázisban. A viselkedésváltozás előnye, hogy fokozza a teljesítményt, elkerülve az extra adatbázis-eléréseket.
Ez a viselkedésváltozás a legtöbb alkalmazást várhatóan nem érinti. Az új viselkedés előnyeinek kiaknázása érdekében először próbálja ki az alkalmazást a 8.5 verziószámú környezetben, mielőtt módosítaná a kódot vagy visszaállna a korábbi viselkedésre.
Ha problémákat tapasztal vagy tudja, hogy alkalmazását úgy írták meg, hogy azt
várja, hogy a tárolási művelet először nézzen utána az új entitásoknak az
adatbázisban és ne kezelje az új (lehetséges) tárolási kivételt, akkor
visszaállhat az előző viselkedésre a openjpa.Compatibility
tulajdonság beállításával a persistence.xml fájlban:
Ha nem kívánja módosítani az alkalmazást, akkor beállíthatja a tulajdonságot JVM rendszertulajdonságként is.
Létezik az ehhez a potenciális alkalmazás problémához kapcsolódó Java szabály és XML szabály is, amely felhívja a figyelmet a problémára. Törekvésenként csak egy eredmény lesz megjelölve még akkor is, ha több helyen van kaszkád tárolás meghatározva. Ez lehetőséget ad rá, hogy a teljes alkalmazást kiértékelje ezen probléma tekintetében.
Különösen fontos persist és merge EntityManager
műveletek hívásainak kiértékelése annak megállapításához, hogy az adott kód
megfelelően fogja-e kezelni a viselkedésváltozást.
Az alkalmazás kiértékelése
után kikapcsolhatja ezt a szabályt az elemzési konfigurációban vagy figyelmen
kívül hagyhatja az előállított eredményeket.
A Java szabály a viszony annotációkban meghatározott alábbi kaszkád stratégiákat jelöli meg:
Például a megjelöli a rendszer a viszony annotációkban található
kaszkádtípusokat (például @OneToOne).
Az XML megjelöli az orm.xml fájlban található entitásokhoz meghatározott alábbi kaszkád stratégiákat:
Ha ezen elemek bármelyikét látja megjelölve, akkor ki kell értékelnie a kódot,
amely a merge vagy persist metódust használja persist
vagy merge kaszkád stílusú entitáson. Ha az alkalmazás azt várja, hogy új
entitás beillesztése előtt először az adatbázis ellenőrzésre kerül, az
alkalmazás viselkedésváltozást tapasztalhat.
Ha hozzáadja a openjpa.Compatibility tulajdonságot a
persistence.xml fájlhoz, akkor az elemzést
újrafuttatva győződjön meg róla, hogy nincsenek új eredményei a kapcsolódó
Ellenőrizze a
viselkedés változását a ListAttribute elemet érintő JPA MetaModel
kódkészítésben szabályban.
További információk: