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:
- Garpu saka gudang
- Download versi proyek menyang komputer.
- Tambah dependensi menyang pom.xml:
- mysql: mysql-konektor-Jawa: 8.0.30
- org.hibernate: hibernate-core-jakarta: 5.6.11.Final
- Nggawe mbangun maven (mvn resik nginstal). Kanggo ngganti, kita nggunakake Java versi 1.8.
- 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:
- Jalanake skrip nggawe skema rpg ing Workbench:
CREATE SCHEMA `rpg` ;
- Opsional . Yen sampeyan pengin ndeleng prilaku apa samesthine, sampeyan bisa ngganti
com.game.service.PlayerService
nilai 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" .@Qualifier
IPlayerRepository
PlayerRepositoryMemory
@Qualifier
- 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. PlayerRepositoryDB
Tambah lapangan final pribadi ing kelasSessionFactory sessionFactory
, initialize lapangan iki ing konstruktor kelas. Gunakake properti kaya ing tugas normal (kita bakal nggarap database MySQL versi 8). Saka menarik - nambah
Iki bakal ngidini sampeyan ora nggawe tabel kanthi manual (utawa liwat eksekusi skrip sql).properties.put(Environment.HBM2DDL_AUTO, "update");
- Ngleksanakake kabeh cara kelas. Kanggo ngganti, ayo nindakake iki:
- Ngleksanakake cara
getAll
liwatNativeQuery
- Ngleksanakake cara
getAllCount
liwatNamedQuery
- Ing cara , nelpon cara
beforeStop
y . 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.sessionFactory
close
@PreDestroy
- Implementasi metode liyane terserah sampeyan. Nanging aja lali babagan transaksi lan komitmen kanggo metode sing ngganti isi database.
- 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.
- 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:
Lan ing konstruktor kelas PlayerRepositoryDB, ganti rong pilihan: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
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.properties.put(Environment.DRIVER, "com.p6spy.engine.spy.P6SpyDriver"); properties.put(Environment.URL, "jdbc:p6spy:mysql://localhost:3306/rpg");
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.
GO TO FULL VERSION