Ma az a feladatunk, hogy befejezzük a második projektet a Hibernate témakörben. Lényege, hogy megértsük az adatbázis szerkezetét, leképezzük az entitást a meglévő táblákra, és hozzáadjuk a minimális funkcionalitást, hogy ellenőrizzük, hogy a leképezés megfelelően történik-e.
Most részletesebben:
- Töltse le a dump fájlt , és telepítse a helyi gépére. Adatbázisként egy tesztadatbázist fogunk használni, amelyet példaként a MySQL telepítőcsomaggal együtt terjesztünk. A dump az adatbázis állapotának javításához szükséges, mivel nem tudjuk garantálni, hogy egy nap, hónap, év alatt nem változik.
- Nem lesz projektsablonunk, ezért saját maga hozza létre a projektet. Egy maven projektnek kell lennie minden szükséges függőséggel ( hibernate-core-jakarta , mysql-connector-java , p6spy ).
- Csatlakoztassa a helyi telepített adatbázisunkat adatforrásként az Idea-ban. Ezután az Adatbázis lapon vigye a kurzort a filmsémára, és nyomja meg a billentyűkombinációt
Alt+Ctrl+Shift+U
(csak az Ultimate verzióban működik). Ez megmutatja a teljes filmséma szerkezetét (oszlopnevekkel, kulcsokkal stb.). Így néz ki:Egyetértek, nem túl kényelmes nézni. Kapcsolja ki az összes oszlop és megjegyzés címének megjelenítését:
Ennek eredményeként egy már elemezhető adatbázissémát kap:
- Az áramkör bonyolultnak tűnik, de nem minden olyan rossz. Az adatbázis szerkezetének elemzéséhez meg kell találnia, hol kezdje el. Nincs egyetlen helyes válasz, de azt javaslom, hogy egy táblázattal kezdje
film
. Vegyünk példának néhány kapcsolatot:- A
film
és a táblák közötti kapcsolatfilm_text
explicit OneToOne kapcsolat , mivel a táblánakfilm_text
van egy mezője,film_id
amelyNEMtáblázatból származó azonosítóra utalfilm
(nincs idegen kulcs). De név és logika alapján ennek a kapcsolatnak kell lennie. Ezenkívül a táblázatbanfilm_text
a mezőfilm_id
elsődleges kulcsként működik, amely garantálja, hogy egy „film” legfeljebb egy „filmszövegnek” feleljen meg. - Most nézzük a táblázatokat
film
éscategory
. Logikusan egy filmnek több kategóriája lehet. És egy kategória, esetleg más filmek. Ezenkívül van egy közbenső hivatkozási tábla a két tábla közöttfilm_category
. A fentiek alapján ez egy explicit ManyToMany kapcsolat . - Megnézzük a táblázatokat
film
éslanguage
. A logika szempontjából a filmnek több nyelvre is lehet fordítása, és különböző filmek lehetnek ugyanazon a nyelven. Vagyis a ManyToMany javasolja magát . De ha megnézzük a táblázat tartalmátfilm
, láthatjuk, hogy a táblázat minden sora egyedi film. És csak egy language_id mező van a sorban (van még original_language_id is, de minden rekordban null, így figyelmen kívül hagyhatjuk). Vagyis egy filmnek csak egy nyelve lehet. És egy nyelv, esetleg különböző filmek. A kapcsolat a ManyToOne (a kapcsolat filmről nyelvre irányul).
- A
- Most a fő feladat az összes szükséges entitásosztály létrehozása és leképezése a sématáblázatokra
movie
. - Adjon hozzá egy metódust, amely új vevőt (ügyféltáblát) hozhat létre az összes függő mezővel. Ne felejtse el a módszert tranzakcióssá tenni (hogy ne kerüljön olyan helyzetbe, hogy a vevő címe szerepel az adatbázisban, de maga a vevő nem).
- Adjon hozzá egy tranzakciós módszert, amely leírja az „ügyfél elment, és visszaadott egy korábban kölcsönzött filmet” eseményt. Válasszon tetszőleges vevőt és kölcsönzési eseményt. A film értékelését nem kell újraszámolni.
- Adjon hozzá egy tranzakciós módszert, amely leírja a „vevő elment az üzletbe (üzletbe) és ott bérelt (bérleti) készletet (készletet)” eseményt. Ezzel egyidejűleg fizetést (kifizetést) hajtott végre az eladónak (személyzetnek). A filmet (leltáron keresztül) saját belátása szerint válassza ki. Az egyetlen megkötés az, hogy a filmnek kölcsönözhetőnek kell lennie. Vagyis vagy egyáltalán ne legyen készletnyilvántartás a kölcsönzésben, vagy a készlet utolsó kölcsönzésére vonatkozó táblázat visszatérési_dátum oszlopát kell kitölteni.
rental
- Adjon hozzá egy tranzakciós módszert, amely leírja az „új filmet forgattak, és kölcsönözhetővé vált” eseményt. Filmet, nyelvet, színészeket, kategóriákat stb. saját belátása szerint választhat.
- A táblázat szerkezete nem módosítható. De javaslatokat kell tennie a javításra. A 4. bekezdésben azonosítottunk egy problémás helyet ( az idegen kulcs hiánya a táblázat
film_text
mezőjében ). Nézze meg, vannak-e még ilyen „hibák” az adatbázis-struktúrában. Ha igen, adjon hozzá egy readme fájlt a projekt gyökeréhez, és írja le ezeket a hibákat.film_id
film
Projekt elemzés:
GO TO FULL VERSION