Emlékszel a frontend harmadik moduljának projektjére, ahol egy rpg admin panelt kellett implementálni a szerver API-hoz? Ha valaki emlékszik, egy térképet használtak tárhelyként a szerveren. A való életben természetesen nem ilyen tárolókat használnak, hanem adatbázisokat használnak. A projekt célja egy alternatív tárolóréteg-megvalósítás megírása a Hibernate használatával.

Ehhez szüksége van:

  1. Fork egy adattárból
  2. Töltse le a projekt verzióját a számítógépére.
  3. Függőségek hozzáadása a pom.xml fájlhoz:
    • mysql:mysql-connector-java:8.0.30
    • org.hibernate: hibernate-core-jakarta: 5.6.11. Final
  4. Készíts egy maven buildet (mvn tiszta telepítés). A változtatás kedvéért a Java 1.8-as verzióját használjuk.
  5. Indítási konfiguráció hozzáadása az Idea segítségével. Ennek a tételnek a megvalósítása megtalálható a https://codegym.cc/quests/lectures/cgu.module3.lecture02 előadásban (4. tétel). Az egyetlen különbség a műtárgy más elnevezése. Ha mindent jól csinált, és elindította az alkalmazást, valami ilyesmit fog látni:
  6. Futtassa az rpg séma létrehozó parancsfájlt a Workbenchben:
    CREATE SCHEMA `rpg` ;
    
  7. Választható . Ha látni szeretné, hogy milyen viselkedés várható, módosíthatja a com.game.service.PlayerServicemegjegyzés értékét „db” -ről „memory” értékre az osztályban a konstruktor paraméterben . Ebben az esetben a Spring a . A teszt után ne felejtse el visszaállítani a megjegyzés értékét "db" -re .@QualifierIPlayerRepositoryPlayerRepositoryMemory@Qualifier
  8. Rendezze el az összes szükséges megjegyzést az entitásosztályban com.game.entity.Player. A táblázat elnevezése "lejátszó", séma "rpg". Ennél @Enumerated(EnumType.ORDINAL)a megjegyzés mellett használja a @Column. Hadd emlékeztesselek arra, hogy a névmező hossza legfeljebb 12 karakter, a címmező legfeljebb 30 karakter lehet. Egyáltalán nem lehet nulla mező.
  9. PlayerRepositoryDBAdjon hozzá egy privát végső mezőt az osztályhoz SessionFactory sessionFactory, inicializálja ezt a mezőt az osztálykonstruktorban. Használja a tulajdonságokat a normál feladatokhoz hasonlóan (a MySQL adatbázis 8-as verziójával fogunk dolgozni). Érdekes - add
    properties.put(Environment.HBM2DDL_AUTO, "update");
    
    Ez lehetővé teszi, hogy ne hozzon létre táblát kézzel (vagy egy sql szkript végrehajtásával).
  10. Valamennyi osztálymetódus implementálása. A változatosság kedvéért tegyük ezt:
    • Végezze el a módszert getAllkeresztülNativeQuery
    • Végezze el a módszert getAllCountkeresztülNamedQuery
    • A metódusban beforeStophívja meg az y sessionFactorymetódust close. Ha van megjegyzés a metódushoz @PreDestroy, a Spring meghívja ezt a metódust az alkalmazás leállítása előtt, és ez lehetővé teszi az összes rendszererőforrás érvényes felszabadítását.
    • A többi módszer megvalósítása Önön múlik. De ne feledkezzünk meg a tranzakciókról és a commit-okról sem olyan módszerek esetében, amelyek valamilyen módon megváltoztatják az adatbázis tartalmát.
  11. Indítsa el az alkalmazást. Ha mindent jól csináltál, kapsz egy működő alkalmazást. De ott nincsenek adatok, ezért futtassa az init.sql szkriptet (forrásokból) a Workbench-en keresztül, hogy megjelenjenek. Ezután nyomja meg az F5 billentyűt a böngészőben, és ellenőrizze, hogy az összes módszert megfelelően implementálta-e.
  12. Érdekes lenne látni, hogy a Hibernate pontosan milyen lekérdezéseket hajt végre, ezért adjunk hozzá lekérdezésnaplózást. Ehhez adja hozzá a p6spy:p6spy:3.9.1 függőséget a pom.xml fájlhoz . Az erőforrások mappában hozzon létre egy spy.properties fájlt , amelyben adja meg:
    driverlist=com.mysql.cj.jdbc.Driver
    dateformat=yyyy-MM-dd hh:mm:ss a
    appender=com.p6spy.engine.spy.appender.StdoutLogger
    logMessageFormat=com.p6spy.engine.spy.appender.MultiLineFormat
    
    A PlayerRepositoryDB osztály konstruktorában módosítson két lehetőséget:
    properties.put(Environment.DRIVER, "com.p6spy.engine.spy.P6SpyDriver");
    properties.put(Environment.URL, "jdbc:p6spy:mysql://localhost:3306/rpg");
    
    Most minden kérés szerver kimenetében 2 sort fog látni. Az első az, hogy milyen utasítás készül, a második a lekérdezés a beillesztett paraméterekkel.

Ez minden, a projekt kész, gratulálunk!

Valójában a tavaszi Hibernate-tel való munka más megközelítést alkalmaz, amelyet az ötödik modulban fogunk bemutatni.


Projektelemzés.