Elingi proyek saka modul katelu ing frontend, ngendi iku perlu kanggo ngleksanakake panel admin rpg kanggo API server? Yen ana sing ngelingi, peta digunakake minangka panyimpenan ing server. Alami, ing urip nyata, panyimpenan kasebut ora digunakake, nanging basis data digunakake. Tujuan proyek iki yaiku nulis implementasi lapisan repositori alternatif nggunakake Hibernate.

Kanggo iki sampeyan kudu:

  1. Garpu saka gudang
  2. Download versi proyek menyang komputer.
  3. Tambah dependensi menyang pom.xml:
    • mysql: mysql-konektor-Jawa: 8.0.30
    • org.hibernate: hibernate-core-jakarta: 5.6.11.Final
  4. Nggawe mbangun maven (mvn resik nginstal). Kanggo ngganti, kita nggunakake Java versi 1.8.
  5. Tambah konfigurasi peluncuran liwat Idea. Implementasine item iki bisa ditemokake ing kuliah https://codegym.cc/quests/lectures/cgu.module3.lecture02 (item 4). Bentenipun mung beda jeneng kanggo artefak. Yen sampeyan nindakake kabeh kanthi bener lan mbukak aplikasi kasebut, sampeyan bakal weruh kaya iki:
  6. Jalanake skrip nggawe skema rpg ing Workbench:
    CREATE SCHEMA `rpg` ;
    
  7. Opsional . Yen sampeyan pengin ndeleng prilaku apa samesthine, sampeyan bisa ngganti com.game.service.PlayerServicenilai anotasi saka "db" kanggo "memori" ing kelas ing parameter konstruktor . Ing kasus iki, Spring bakal nggunakake . Sawise tes, aja lali ngganti nilai anotasi bali menyang "db" .@QualifierIPlayerRepositoryPlayerRepositoryMemory@Qualifier
  8. Atur kabeh anotasi sing dibutuhake ing kelas entitas com.game.entity.Player. Tabel kasebut kudu dijenengi "pamuter", skema "rpg". Kanggo enams, gunakake @Enumerated(EnumType.ORDINAL)saliyane anotasi @Column. Ayo kula ngelingake yen dawa kolom jeneng kudu nganti 12 karakter, kolom judhul - nganti 30 karakter. Pancen kabeh kolom ora kudu null.
  9. PlayerRepositoryDBTambah lapangan final pribadi ing kelas SessionFactory sessionFactory, initialize lapangan iki ing konstruktor kelas. Gunakake properti kaya ing tugas normal (kita bakal nggarap database MySQL versi 8). Saka menarik - nambah
    properties.put(Environment.HBM2DDL_AUTO, "update");
    
    Iki bakal ngidini sampeyan ora nggawe tabel kanthi manual (utawa liwat eksekusi skrip sql).
  10. Ngleksanakake kabeh cara kelas. Kanggo ngganti, ayo nindakake iki:
    • Ngleksanakake cara getAllliwatNativeQuery
    • Ngleksanakake cara getAllCountliwatNamedQuery
    • Ing cara , nelpon cara beforeStopy . Kanthi nduwe anotasi babagan metode kasebut , Spring bakal nelpon metode iki sadurunge mungkasi aplikasi, lan iki bakal ngidini sampeyan ngeculake kabeh sumber daya sistem kanthi bener.sessionFactoryclose@PreDestroy
    • Implementasi metode liyane terserah sampeyan. Nanging aja lali babagan transaksi lan komitmen kanggo metode sing ngganti isi database.
  11. Bukak aplikasi kasebut. Yen sampeyan nindakake kabeh kanthi bener, sampeyan bakal entuk aplikasi sing bisa digunakake. Nanging ora ana data ana, supaya mbukak script init.sql (saka sumber daya) liwat Workbench supaya padha katon. Sawise iku, penet F5 ing browser lan priksa manawa sampeyan wis ngetrapake kabeh cara kanthi bener.
  12. Iku bakal menarik kanggo ndeleng persis apa pitakonan Hibernate kaleksanan, supaya kita nambah query logging. Kanggo nindakake iki, nambah p6spy:p6spy:3.9.1 dependensi kanggo pom.xml . Ing folder sumber daya, nggawe file spy.properties , kang nemtokake:
    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
    
    Lan ing konstruktor kelas PlayerRepositoryDB, ganti rong pilihan:
    properties.put(Environment.DRIVER, "com.p6spy.engine.spy.P6SpyDriver");
    properties.put(Environment.URL, "jdbc:p6spy:mysql://localhost:3306/rpg");
    
    Saiki ing output server kanggo saben panyuwunan sampeyan bakal weruh 2 baris. Kapisan yaiku apa pernyataan sing disiapake, sing nomer loro yaiku pitakon kanthi parameter sing dilebokake.

Sing kabeh, proyek wis siyap, sugeng!

Nyatane, nggarap Hibernate saka Spring nggunakake pendekatan sing beda, sing bakal kita bahas ing modul kaping lima.


Analisis proyek.