Ngayon ang aming gawain ay kumpletuhin ang pangalawang proyekto sa paksang Hibernate. Ang kakanyahan nito ay upang maunawaan ang istraktura ng database, imapa ang entity sa mga umiiral na talahanayan, at idagdag ang minimum na pag-andar upang matiyak na ang pagmamapa ay tapos na nang tama.
Ngayon sa mas detalyado:
- I-download ang dump file at i-deploy ito sa iyong lokal na makina. Bilang isang database, gagamit kami ng isang pagsubok na database, na ibinahagi bilang isang halimbawa kasama ang MySQL installation package. Ang dump ay kailangan upang ayusin ang estado ng database, dahil hindi namin magagarantiya na hindi ito magbabago sa isang araw, buwan, taon.
- Hindi kami magkakaroon ng template ng proyekto, kaya ikaw mismo ang gumawa ng proyekto. Ito ay dapat na isang maven na proyekto na may lahat ng kinakailangang dependencies ( hibernate-core-jakarta , mysql-connector-java , p6spy ).
- Isaksak ang aming lokal na naka-deploy na database bilang datasource sa Idea. Pagkatapos nito, sa tab na Database, ilagay ang cursor sa schema ng pelikula at pindutin ang key combination
Alt+Ctrl+Shift+U
(gumagana lamang sa Ultimate version). Ipapakita nito ang istruktura ng buong schema ng pelikula (na may mga pangalan ng column, key, atbp.). Mukhang ganito:I agree, hindi masyadong komportable panoorin. I-off ang display ng pamagat ng lahat ng column at komento:
Bilang resulta, makakakuha ka ng isang database schema na maaari nang masuri:
- Ang circuit ay mukhang kumplikado, ngunit hindi lahat ay napakasama. Upang pag-aralan ang istraktura ng database, kailangan mong hanapin kung saan magsisimula. Walang iisang tamang sagot, ngunit inirerekumenda kong magsimula sa isang talahanayan
film
. Kumuha tayo ng ilang mga relasyon bilang isang halimbawa:- Ang relasyon sa pagitan ng mga talahanayan
film
atfilm_text
ay isang tahasang OneToOne na relasyon , dahil ang talahanayanfilm_text
ay may fieldfilm_id
na iyonHINDIay tumutukoy sa isang ID mula sa isang talahanayanfilm
(walang foreign key). Ngunit sa pangalan at lohika, ang koneksyon na ito ay dapat. Bilang karagdagan, sa talahanayan,film_text
ang fieldfilm_id
ay gumaganap bilang pangunahing key, na ginagarantiyahan na ang isang "pelikula" ay tumutugma sa hindi hihigit sa isang "teksto ng pelikula". - Ngayon tingnan natin ang mga talahanayan
film
atcategory
. Logically, ang isang pelikula ay maaaring magkaroon ng ilang kategorya. At isang kategorya, maaaring iba't ibang mga pelikula. Bilang karagdagan, mayroong isang intermediate na talahanayan ng link sa pagitan ng dalawang talahanayan na itofilm_category
. Batay sa lahat ng nasa itaas, isa itong tahasang ManyToMany na relasyon . - Tumingin kami sa mga mesa
film
atlanguage
. Mula sa punto ng view ng lohika, ang pelikula ay maaaring may pagsasalin sa iba't ibang mga wika at iba't ibang mga pelikula ay maaaring nasa parehong wika. Iyon ay, ang ManyToMany ay nagmumungkahi mismo . Ngunit kung titingnan natin ang mga nilalaman ng talahanayanfilm
, makikita natin na ang bawat hilera ng talahanayan ay isang natatanging pelikula. At mayroon lamang isang language_id na patlang sa linya (mayroon ding original_language_id, ngunit sa lahat ng mga talaan ito ay null, kaya maaari nating balewalain ito). Ibig sabihin, ang isang pelikula ay maaaring magkaroon lamang ng isang wika. At isang wika, marahil iba't ibang mga pelikula. Ang koneksyon ay ManyToOne (ang koneksyon ay nakadirekta mula sa pelikula patungo sa wika).
- Ang relasyon sa pagitan ng mga talahanayan
- Ngayon ang pangunahing gawain ay lumikha ng lahat ng kinakailangang klase ng entity at imapa ang mga ito sa mga talahanayan ng schema
movie
. - Magdagdag ng paraan na maaaring lumikha ng bagong customer (talahanayan ng customer) kasama ang lahat ng umaasang field. Huwag kalimutang gawing transactional ang pamamaraan (upang hindi mapunta sa sitwasyon na ang address ng mamimili ay naitala sa database, ngunit ang bumibili mismo ay hindi).
- Magdagdag ng paraan ng transaksyon na naglalarawan sa kaganapang "nagpunta ang customer at nagbalik ng dati nang nirentahang pelikula." Pumili ng anumang bumibili at kaganapan sa pagpaparenta na gusto mo. Hindi na kailangang kalkulahin muli ang rating ng pelikula.
- Magdagdag ng paraan ng transaksyon na naglalarawan sa kaganapan "nagpunta ang mamimili sa tindahan (tindahan) at nagrenta ng imbentaryo (imbentaryo) doon. At the same time, nagbayad siya (payment) sa seller (staff). Pelikula (sa pamamagitan ng imbentaryo) pumili sa iyong paghuhusga. Ang tanging paghihigpit ay ang pelikula ay dapat na magagamit para sa upa. Iyon ay, alinman ay dapat na walang mga talaan ng imbentaryo sa pagrenta, o ang return_date na column ng talahanayan
rental
para sa huling pagrenta ng imbentaryo na ito ay dapat punan. - Magdagdag ng transactional na paraan na naglalarawan sa kaganapan "isang bagong pelikula ang kinunan at ito ay naging available para rentahan." Pelikula, wika, aktor, kategorya, atbp., pumili sa iyong paghuhusga.
- Hindi mababago ang istraktura ng talahanayan. Ngunit kailangan mong gumawa ng mga mungkahi para sa pagpapabuti. Natukoy namin ang isang may problemang lugar sa talata 4 (kawalan ng foreign key sa talahanayan
film_text
sa fieldfilm_id
ng talahanayanfilm
). Tingnan kung mayroon pa ring "mga pagkakamali" sa istraktura ng database. Kung gayon, magdagdag ng readme file sa ugat ng proyekto at ilarawan ang mga pagkakamaling ito.
Pagsusuri ng proyekto: