Hari ini tugas kami adalah untuk menyelesaikan projek kedua mengenai topik Hibernate. Intipatinya adalah untuk memahami struktur pangkalan data, memetakan entiti kepada jadual sedia ada, dan menambah kefungsian minimum untuk memastikan pemetaan dilakukan dengan betul.

Sekarang dengan lebih terperinci:

  1. Muat turun fail dump dan gunakannya ke mesin tempatan anda. Sebagai pangkalan data, kami akan menggunakan pangkalan data ujian, yang diedarkan sebagai contoh bersama pakej pemasangan MySQL. Lambakan diperlukan untuk membetulkan keadaan pangkalan data, kerana kami tidak dapat menjamin bahawa ia tidak akan berubah dalam satu hari, bulan, tahun.
  2. Kami tidak akan mempunyai templat projek, jadi buat sendiri projek itu. Ia sepatutnya merupakan projek maven dengan semua kebergantungan yang diperlukan ( hibernate-core-jakarta , mysql-connector-java , p6spy ).
  3. Palamkan pangkalan data yang digunakan tempatan kami sebagai sumber data dalam Idea. Selepas itu, dalam tab Pangkalan Data, letakkan kursor pada skema filem dan tekan kombinasi kekunci Alt+Ctrl+Shift+U(hanya berfungsi dalam versi Ultimate). Ini akan menunjukkan struktur keseluruhan skema filem (dengan nama lajur, kunci, dsb.). Nampak macam ni:

    Saya bersetuju, ia tidak begitu selesa untuk menonton. Matikan paparan tajuk semua lajur dan ulasan:

    Akibatnya, anda akan mendapat skema pangkalan data yang sudah boleh dianalisis:

  4. Litar ini kelihatan rumit, tetapi tidak semuanya begitu buruk. Untuk menganalisis struktur pangkalan data, anda perlu mencari tempat untuk bermula. Tidak ada satu jawapan yang betul, tetapi saya akan mengesyorkan bermula dengan jadual film. Mari kita ambil beberapa perhubungan sebagai contoh:
    • Hubungan antara jadual filmdan film_textialah hubungan OneToOne yang eksplisit , kerana jadual film_textmempunyai medan film_idituTIDAKmerujuk kepada ID daripada jadual film(tiada kunci asing). Tetapi dengan nama dan logik, sambungan ini sepatutnya. Di samping itu, dalam jadual, film_textmedan film_idbertindak sebagai kunci utama, yang menjamin bahawa satu "filem" sepadan dengan tidak lebih daripada satu "teks filem".
    • Sekarang mari kita lihat jadual filmdan category. Secara logiknya, filem boleh mempunyai beberapa kategori. Dan satu kategori, mungkin filem yang berbeza. Di samping itu, terdapat jadual pautan perantaraan antara kedua-dua jadual ini film_category. Berdasarkan semua perkara di atas, ini ialah perhubungan ManyToMany yang jelas .
    • Kami melihat meja filmdan language. Dari sudut logik, filem ini mungkin mempunyai terjemahan ke dalam bahasa yang berbeza dan filem yang berbeza mungkin dalam bahasa yang sama. Iaitu, ManyToMany mencadangkan dirinya sendiri . Tetapi jika kita melihat kandungan jadual film, kita dapat melihat bahawa setiap baris jadual adalah filem yang unik. Dan hanya terdapat satu medan language_id dalam baris (terdapat juga original_language_id, tetapi dalam semua rekod ia adalah batal, jadi kita boleh mengabaikannya). Iaitu, satu filem boleh mempunyai satu bahasa sahaja. Dan satu bahasa, mungkin filem yang berbeza. Sambungan ialah ManyToOne (sambungan diarahkan dari filem ke bahasa).
  5. Sekarang tugas utama adalah untuk mencipta semua kelas entiti yang diperlukan dan memetakannya pada jadual skema movie.
  6. Tambah kaedah yang boleh mencipta pelanggan baharu (jadual pelanggan) dengan semua medan bergantung. Jangan lupa untuk membuat kaedah transaksional (supaya tidak masuk ke dalam situasi bahawa alamat pembeli direkodkan dalam pangkalan data, tetapi pembeli sendiri tidak).
  7. Tambahkan kaedah transaksi yang menerangkan acara "pelanggan pergi dan mengembalikan filem yang disewa sebelum ini". Pilih mana-mana pembeli dan acara penyewaan pilihan anda. Rating filem tidak perlu dikira semula.
  8. Tambah kaedah transaksi yang menerangkan peristiwa "pembeli pergi ke kedai (kedai) dan menyewa (sewa) inventori (inventori) di sana. Pada masa yang sama, dia membuat pembayaran (pembayaran) kepada penjual (kakitangan). Filem (melalui inventori) pilih mengikut budi bicara anda. Satu-satunya sekatan ialah filem itu mesti tersedia untuk disewa. Iaitu, sama ada tiada rekod inventori dalam penyewaan sama sekali, atau lajur tarikh_pulangan jadual rentaluntuk penyewaan terakhir inventori ini hendaklah diisi.
  9. Tambah kaedah transaksi yang menerangkan peristiwa "filem baharu telah dirakam dan ia tersedia untuk disewa." Filem, bahasa, pelakon, kategori, dsb., pilih mengikut budi bicara anda.
  10. Struktur jadual tidak boleh diubah. Tetapi anda perlu membuat cadangan untuk penambahbaikan. Kami mengenal pasti satu tempat bermasalah dalam perenggan 4 (ketiadaan kunci asing dalam jadual film_textpada medan film_idjadual film). Lihat jika masih terdapat "kesilapan" sedemikian dalam struktur pangkalan data. Jika ya, tambahkan fail readme pada akar projek dan huraikan kesilapan ini.

Analisis projek: