Dina iki tugas kita kanggo ngrampungake proyek kapindho ing topik Hibernate. Intine yaiku mangerteni struktur database, map entitas menyang tabel sing wis ana, lan nambah fungsi minimal kanggo mriksa yen pemetaan wis rampung kanthi bener.
Saiki luwih rinci:
- Download file dump lan pasang menyang mesin lokal sampeyan. Minangka basis data, kita bakal nggunakake basis data tes, sing disebarake minangka conto bebarengan karo paket instalasi MySQL. Dump dibutuhake kanggo ndandani kahanan database, amarga kita ora bisa njamin yen ora bakal owah ing dina, sasi, taun.
- Kita ora bakal duwe cithakan proyek, mula gawe proyek kasebut dhewe. Iki kudu dadi proyek maven kanthi kabeh dependensi sing dibutuhake ( hibernate-core-jakarta , mysql-connector-java , p6spy ).
- Pasang ing basis data sing disebarake lokal minangka sumber data ing Idea. Sawise iku, ing tab Database, lebokake kursor ing skema film banjur pencet kombinasi tombol
Alt+Ctrl+Shift+U
(mung dianggo ing versi Ultimate). Iki bakal nuduhake struktur kabeh skema film (kanthi jeneng kolom, tombol, lsp). Katon kaya iki:Aku setuju, iku ora nyaman banget kanggo nonton. Pateni tampilan judhul kabeh kolom lan komentar:
Akibaté, sampeyan bakal entuk skema basis data sing wis bisa dianalisis:
- Sirkuit katon rumit, nanging ora kabeh dadi ala. Kanggo nganalisa struktur database, sampeyan kudu nemokake ngendi arep miwiti. Ora ana jawaban sing bener, nanging aku nyaranake miwiti karo tabel
film
. Ayo dadi conto sawetara hubungan:- Hubungan antarane tabel
film
lan hubungan OneToOnefilm_text
eksplisit , amarga tabel duwe lapangan singfilm_text
film_id
ORAnuduhake ID saka mejafilm
(ora ana tombol manca). Nanging kanthi jeneng lan logika, sambungan iki kudu. Kajaba iku, ing tabel,film_text
lapangan kasebutfilm_id
minangka kunci utama, sing njamin yen siji "film" cocog karo ora luwih saka siji "teks film". - Saiki ayo kang katon ing tabel
film
lancategory
. Secara logis, film bisa duwe sawetara kategori. Lan siji kategori, bisa uga beda film. Kajaba iku, ana tabel link penengah antarane rong tabel ikifilm_category
. Adhedhasar kabeh kasebut ing ndhuwur, iki minangka hubungan ManyToMany sing eksplisit . - We katon ing tabel
film
lanlanguage
. Saka sudut pandang logika, film kasebut bisa uga duwe terjemahan menyang basa sing beda lan film sing beda bisa uga ana ing basa sing padha. Yaiku, ManyToMany nyaranake dhewe . Nanging yen kita ndeleng isi mejafilm
, kita bisa ndeleng manawa saben baris meja minangka film sing unik. Lan mung ana siji lapangan language_id ing baris (ana uga original_language_id, nanging ing kabeh cathetan iku null, supaya kita bisa nglirwakake). Tegese, siji film mung bisa nduweni siji basa. Lan siji basa, bisa uga beda film. Sambungan kasebut ManyToOne (sambungan kasebut diarahake saka film menyang basa).
- Hubungan antarane tabel
- Saiki tugas utama yaiku nggawe kabeh kelas entitas sing dibutuhake lan peta menyang tabel skema
movie
. - Tambah cara sing bisa nggawe pelanggan anyar (tabel pelanggan) karo kabeh kolom gumantung. Aja lali kanggo nggawe cara transactional (supaya ora kanggo njaluk menyang kahanan sing alamat panuku direkam ing database, nanging panuku dhewe ora).
- Tambah cara transaksional sing njlèntrèhaké acara "pelanggan lunga lan bali film sing disewa sadurunge". Pilih panuku lan acara rental sing dipilih. Rating film kasebut ora perlu diitung maneh.
- Nambahake cara transaksional sing nggambarake acara kasebut "panuku menyang toko (toko) lan nyewa (sewa) inventaris (inventaris) ing kana. Ing wektu sing padha, dheweke nggawe pembayaran (pembayaran) marang bakul (staf). Film (liwat inventaris) pilih miturut kawicaksanan sampeyan. Watesan mung yaiku film kasebut kudu disewakake. Tegese, ora ana cathetan persediaan ing rental, utawa kolom return_date tabel
rental
kanggo rental pungkasan persediaan iki kudu diisi. - Tambah cara transaksional sing nggambarake acara kasebut "film anyar ditembak lan kasedhiya kanggo disewakake." Film, basa, aktor, kategori, lan sapiturute, pilih miturut kawicaksanan sampeyan.
- Struktur tabel ora bisa diganti. Nanging sampeyan kudu menehi saran kanggo perbaikan. Kita nemtokake siji panggonan masalah ing paragraf 4 (ora ana kunci asing ing tabel
film_text
ing lapanganfilm_id
mejafilm
). Delengen yen isih ana "blunder" ing struktur database. Yen mangkono, tambahake file readme menyang oyod proyek lan jelasake kesalahan kasebut.
Analisis proyek: