Sziasztok!
Az Adatbázis update webalkalmazás részeként kell megoldanom ezt a problémát, de mivel ez jól elkülöníthető a többitől, ezért gondoltam indítok egy új fórumot neki.
A probléma röviden a következő:
- Van egy domain modellünk mondjuk Körte entitással.
- Felveszünk egy Szilva entitást
- A Körte és a Szilva entitások alapján feltöltjük Pálinka táblát
- A Körte és Szilva entitásokat kibővítjük új mezőkkel, mint pl. fajta, minőség
Ezek a pontok az alkalmazás életciklusában egymás után következnek és az egyes módosításokat egyenként kell lefuttatni. A migráció történhet részben JPA-n keresztül, illetve mindenképpen szükség van a táblákat módosító ALTER utasításokra az új mezők hozzáadásához. Első körben egyszerűnek tűnik a dolog, a legfrissebb domaint kell használni és minden jó, hiszen nem töröltünk semmit, csak hozzáadtunk. A JPA viszont pl. a 3. lépésben hiányolni fogja a még létre nem hozott oszlopokat - amik a 4. lépésben jönnek létre - és így a migrációnk elfekszik.
A gond az, hogy minden migrálásnál az adott verziónak megfelelő domain-t kellene használni. Én a következőkre gondoltam:
- Minden verzió külön package-be kerül az updaterben, saját persistence.xml-lel.
- Marha sok felesleges munka
- Kód változtatással jár, ami kockázatos
- Külön updater minden verzióhoz
- pont az a cél, hogy ezt elkerüljük
- Saját classloader ami minden verziónál a megfelelő domain model-t tölti be
- bonyolult
- összeakadhat a WebLogic classloadereivel
Jelenleg a saját classloader tűnik életképes elképzelésnek, ebben kérném a segítségeteket. Én a portálok classloaderein gondoltam elindulni, mert ott a modulok emlékeim szerint ki/be kapcsolhatóak.
üdv:
pentike