CodeGym /Java 课程 /All lectures for ZH purposes /相关项目:Hibernate (2)

相关项目:Hibernate (2)

All lectures for ZH purposes
第 1 级 , 课程 761
可用

今天我们的任务是完成关于 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

项目分析:

评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION