了解 JPA 和 Hibernate 中的 MappedBy
MappedBy 在管理 Java Persistence API (JPA) 和 Hibernate 中对象关系映射的双向关系方面发挥着至关重要的作用。这是在数据库上下文中建模和导航复杂关系的一种实用方法。
MappedBy 的推荐用法
在您的具体示例中,航空公司拥有许多 AirlineFlight,并且许多 AirlineFlight 属于一家航空公司、mappedBy用于避免重复信息存储。由于您希望AirlineFlights成为拥有的类,因此您在Airline类中指定mappedBy属性:
<code class="java">@OneToMany(fetch=FetchType.LAZY, cascade = {CascadeType.ALL}) @JoinColumn(name="IDAIRLINE") public Set<airlineflight> getAirlineFlights() { return airlineFlights; }</airlineflight></code>
@OneToMany注释中的mappedBy参数指定AirlineFlights表中的IDAIRLINE列是外键映射回航空公司表中的主键。这样,当您查询 Airline 对象时,您还可以轻松获取其关联的 AirlineFlights。
MappedBy 的用途
MappedBy 有几个重要用途:
- 防止 SQL 联接复制信息:如果没有mappedBy,Airline 和 AirlineFlights 之间的联接将同时包含 IDAIRLINE 主键和 AirlineFlights 表中的外键。这可能会导致数据重复和性能问题。
- 提高数据库架构简单性:通过使用mappedBy,您可以确保只有一个表包含外键,从而形成更简单、更规范的数据库schema.
- 支持双向导航:它允许您在两个方向上遍历关系(从 Airline 到 AirlineFlights,反之亦然),而无需编写显式连接查询。
您的特定场景
在您的示例中,AirplaneFlights 表将 IDAIRLINE 列作为指向 Airline 表的外键,但 Airline 表没有相应的 IDAIRLINEFLIGHTS 列。此设置表明 AirlineFlights 是拥有实体,即使您的要求是让 Airline 作为所有者。
要解决此问题,您需要相应地调整注释。 AirlinesFlights 上的 @OneToMany 注释应移至 AirlineFlight 类,并且mappedBy 属性应引用 Airline 类中的“拥有”字段:
<code class="java">@ManyToOne(fetch=FetchType.LAZY) @JoinColumn(name="IDAIRLINE", nullable=false) @MapsId public Airline getAirline() { return airline; }</code>
通过指定mappedBy 和@MapsId,您表明Airline 的主键(不是 AirlineFlights 中的 IDAIRLINE 外键)用于定义关系。这将确保航空公司是拥有实体,并且可以根据需要急切或延迟地获取。
以上是JPA 和 Hibernate 中的'MappedBy”如何帮助管理双向关系并提高数据库模式的简单性?的详细内容。更多信息请关注PHP中文网其他相关文章!

本文讨论了使用Maven和Gradle进行Java项目管理,构建自动化和依赖性解决方案,以比较其方法和优化策略。

本文使用Maven和Gradle之类的工具讨论了具有适当的版本控制和依赖关系管理的自定义Java库(JAR文件)的创建和使用。

本文讨论了使用咖啡因和Guava缓存在Java中实施多层缓存以提高应用程序性能。它涵盖设置,集成和绩效优势,以及配置和驱逐政策管理最佳PRA

本文讨论了使用JPA进行对象相关映射,并具有高级功能,例如缓存和懒惰加载。它涵盖了设置,实体映射和优化性能的最佳实践,同时突出潜在的陷阱。[159个字符]

Java的类上载涉及使用带有引导,扩展程序和应用程序类负载器的分层系统加载,链接和初始化类。父代授权模型确保首先加载核心类别,从而影响自定义类LOA


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

SublimeText3 Linux新版
SublimeText3 Linux最新版

Dreamweaver Mac版
视觉化网页开发工具