CodeGym/Java Course/All lectures for TW purposes/相關項目:Hibernate (2)

相關項目:Hibernate (2)

開放

今天我們的任務是完成關於 Hibernate 主題的第二個項目。它的本質是了解數據庫的結構,將實體映射到現有表,並添加最少的功能來檢查映射是否正確完成。

現在更詳細:

  1. 下載轉儲文件並將其部署到本地計算機。作為數據庫,我們將使用一個測試數據庫,該數據庫作為示例隨MySQL安裝包一起分發。為了修復數據庫的狀態,需要轉儲,因為我們不能保證它不會在一天、一個月、一年內發生變化。
  2. 我們不會有項目模板,因此請自行創建項目。它應該是一個具有所有必需依賴項(hibernate-core-jakartamysql-connector-javap6spy)的 Maven 項目。
  3. 在Idea中插入我們本地部署的數據庫作為數據源。之後,在“數據庫”選項卡中,將光標放在電影模式上並按下組合鍵Alt+Ctrl+Shift+U(僅適用於終極版)。這將顯示整個電影模式的結構(包括列名、鍵等)。看起來像這樣:

    我同意,看著不是很舒服。關閉所有欄目和評論標題的顯示:

    結果,您將獲得一個可以分析的數據庫模式:

  4. 電路看起來很複雜,但並非一切都那麼糟糕。要分析數據庫的結構,您需要找到從哪裡開始。沒有單一的正確答案,但我建議從表格開始film。我們以幾個關係為例:
    • film表和之間的關係film_text是顯式一對一關係,因為表film_text有一個film_id字段不是指的是表中的IDfilm(無外鍵)。但從名稱和邏輯上看,這種聯繫應該是。另外,在表中,film_text該字段film_id作為主鍵,保證了一個“電影”對應的“電影文本”不超過一個。
    • 現在讓我們看看表filmcategory。從邏輯上講,一部電影可以有幾個類別。一個類別,也許是不同的電影。此外,這兩個表之間還有一個中間鏈接表film_category。基於以上所有內容,這是一個顯式的ManyToMany關係。
    • 我們看表filmlanguage。從邏輯上看,電影可能有不同語言的翻譯,不同的電影可能是同一種語言。也就是說,ManyToMany暗示自己。但是如果我們查看表格的內容film,我們可以看到表格的每一行都是一部獨特的電影。並且該行只有一個language_id字段(也有original_language_id,但是在所有記錄中都是null,可以忽略)。也就是說,一部電影只能有一種語言。一種語言,也許是不同的電影。連接是ManyToOne(連接是從電影到語言)。
  5. 現在的主要任務是創建所有必要的實體類並將它們映射到模式表中movie
  6. 添加一個方法,可以創建一個具有所有依賴字段的新客戶(客戶表)。不要忘記使該方法具有事務性(以免出現買家地址記錄在數據庫中但買家本人沒有的情況)。
  7. 添加描述“客戶去並歸還以前租借的電影”事件的交易方法。選擇您選擇的任何買家和租賃活動。電影的評分不需要重新計算。
  8. 添加一個描述事件“買家去了商店(store)並在那裡租用(rental)存貨(inventory)”的交易方法。同時,他向賣家(工作人員)支付了一筆款項(付款)。電影(通過庫存)自行選擇。唯一的限制是影片必須可供出租。即要么rental中根本沒有存貨記錄,要么填入該存貨最後一次出租的表的return_date列。rental
  9. 添加一個描述事件“一部新電影被拍攝並且可以出租”的交易方法。電影、語言、演員、類別等,隨意選擇。
  10. 無法更改表結構。但是你需要提出改進建議。我們在第 4 段中確定了一個有問題的地方(表字段上的表中缺少外鍵)。看看數據庫結構中是否還有這樣的“失誤”。如果是這樣,請將自述文件添加到項目的根目錄並描述這些錯誤。film_textfilm_idfilm

項目分析:

留言
  • 受歡迎
你必須登入才能留言
此頁面尚無留言