OneToMany - 连接表和外键之间有什么区别?

2023-11-25

有可能禁用@OneToMany关系连接表与@JoinColumn注解。默认是连接表。

例如,生产系统的优点和缺点是什么?
什么时候应该使用连接表,什么时候不应该使用?

谢谢。


默认情况下@OneToMany仅当您使用时才会创建连接表单向关系.

换句话说,如果你有Employee and Project实体和Employee实体定义如下(假设没有orm.xml这些实体的条目):

@Entity
public class Employee {
    // ...

    @OneToMany
    Set<Project> projects;
}

@Entity
public class Project {
    // ...
}

JPA 提供商将创建一个连接表(注意没有mappedBy属性在@OneToMany注释,因为没有引用Employee实体来自Project).

另一方面,如果您使用双向关系:

@Entity
public class Employee {
    // ...

    @OneToMany(mappedBy="employee")
    Set<Project> projects;
}

@Entity
public class Project {
    // ...

    @ManyToOne
    Employee employee;
}

将不会使用连接表,因为将使用“多”端来存储此关系的外键。

但是,即使在具有双向连接的情况下,您也可以强制使用连接表@OneToMany与定义的关系mappedBy属性。你可以使用它来实现@JoinTable关系拥有方的注释。

正如您所提到的,还有一种可能性可以使用@JoinColumn如果默认使用连接表(单向@OneToMany关系)。

最好亲自测试 FK 和连接表的性能差异。我只能猜测较少的连接(在本例中:FK)似乎具有更好的性能。

此外,有时 DBA 定义了数据库模式,您只需将映射调整到现有模式即可。那么你就别无选择 FK 或连接表 - 这就是你有选择的原因。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OneToMany - 连接表和外键之间有什么区别? 的相关文章

  • 将区间映射到更小的区间的算法

    我尝试搜索 但由于问题的性质 我无法找到满意的内容 我的问题如下 我试图将 0 到 2000 范围内的数字 尽管理想情况下上限是可调的 映射到 10 到 100 范围内的更小的区间 上限将映射 2000 gt 100 和下限也是如此 除此之
  • 将 SpringBootTest 与 Spring 之前运行的其他测试一起使用时,如何确保 Eclipselink 发生加载时间编织

    我正在使用 Spring Rest Docs 为我的 REST 服务生成文档 这涉及运行单元 严格集成 测试 这些测试针对由测试启动的实时 Spring Boot 容器运行 测试类如下所示 RunWith SpringJUnit4Class
  • 使用 Hibernate 映射 Map

    似乎在我看来 到处都有过时的版本 不再起作用 我的问题看起来很简单 我有一个 Java 类 它映射到 derby 数据库 我正在使用注释 并成功地在数据库中创建了所有其他表 但在这个特定的示例中 我只需要一个 Map 它不使用任何其他类 只
  • EclipseLink 2.7.0 和 JPA API 2.2.0 - 签名不匹配

    当运行由maven构建的具有以下依赖项的项目时
  • Envers 多级实体修订指南

    用户有 n 个联系人 联系人可以有本地化的评论 评论在联系人之间共享 爪哇豆 Audited Entity public class User OneToMany fetch FetchType EAGER cascade CascadeT
  • Elasticsearch 关于“空索引”的查询

    在我的应用程序中 我使用了几个elasticsearch索引 它们在初始状态下不包含索引文档 我认为这可以称为 空 该文档的映射是正确且有效的 该应用程序还有一个包含实体的关系数据库 这些实体可能具有在 elasticsearch 中关联的
  • MyISAM 方言生成错误的 DDL

    我们使用 MyISAM 方言org hibernate dialect MySQLMyISAMDialect使用JPA2自动生成DDL文件3 6 9 FinalMySQL 5 5 数据库上的 hibernate 提供程序 The creat
  • 原则 2 OneToMany 级联 SET NULL

    错误 无法删除或更新父行 外键约束失败 课程 class Teacher ORM OneToMany targetEntity publication mappedBy teacher protected publications clas
  • 为什么我的 NHibernate 包集合没有动态设置子项的“父 ID”?

    我有一个新对象 其中包含一些作为 IList 属性的新对象的集合 我通过sql探查器看到正在执行两个插入查询 一个用于父级 它具有新的guid id 另一个用于子级 但是 引用父级的子级上的外键是一个空guid 这是我在父级上的映射
  • 如何使用AutoMapper按照类中定义的顺序映射对象?

    给定这两个对象 我使用非常不同的对象来更好地阐明 public class Car public string Brand get set public int Speed get set public class Apple public
  • 如何在基于其他数据帧的数据帧中创建联接?

    我有 2 个数据框 一份包含学生批次详细信息 另一份包含分数 我想加入 2 个数据框 数据框1包含 s1 s2 s3 Stud1 Stud2 Stud3 Stud2 Stud4 Stud1 Stud1 Stud3 Stud4 数据框2包含
  • EclipseLink MOXy:XmlPath 注释中的逻辑运算符

    逻辑运算符在 EclipseLink MOXy 的 XmlPath 注释中工作吗 我尝试过但无法使其工作 没有抛出异常 并且没有任何内容绑定到 元素 例如 我想在绑定文件中包含如下内容
  • JPA Criteria查询Path.get left join是否可以

    我对 JPA 标准有疑问 这是我的 JPA 标准查询 CriteriaBuilder criteriaBuilder getEm getCriteriaBuilder CriteriaQuery
  • 随机排列

    我无法找到一种随机洗牌元素的好方法std vector经过一些操作后 恢复原来的顺序 我知道这应该是一个相当简单的算法 但我想我太累了 由于我被迫使用自定义随机数生成器类 我想我不能使用std random shuffle 无论如何这没有帮
  • 我应该使用 @NamedQuery 注释还是 addNamedQuery 方法?

    目前 组成我的应用程序的 JPA 实体有一个 NamedQueries 块 其中包含许多 NamedQuery 注释 这很有效 但我的一些实体有超过 80 个 NamedQuery 注释 并且变得难以维护 我现在需要向查询添加排序 并且不想
  • 无法在 ReactJS 中渲染嵌套地图

    我正在尝试嵌套地图以在对象内渲染数组 我的卡片组件渲染方法 非嵌套 工作 render return div class mediator container this state routeList map route index gt
  • 如何在 Hibernate 3.6 中正确级联保存主键上的一对一双向关系

    我与共享密钥有一对一的双向实体关系 当我尝试保存关联的所有者时 我收到针对关系拥有方的 生成 null id 异常 我正在利用 hibernate entitymanager 并使用 spring 进行事务管理 拥有实体 Entity Ta
  • 如何在 JPA 2 / Hibernate 中进行可移植和本机 ID 生成?

    我希望在当前运行 Hibernate 和 MySQL 的 JPA 2 实体上生成本机和可移植的 ID 当使用 GenerateValue strategy AUTO 时 hibernate 默认为 MySQL 上的 hibernate se
  • JPA 中的复合主键

    EmbeddedId 或 IdClass 注释用于表示复合主键 我该如何使用不带 EmbeddedId或IdClass 的复合主键 如果可以在没有 EmbeddedId或IdClass 的情况下使用复合主键 那么我该如何使用EntityMa
  • 如何格式化 Json 输出

    请帮助我如何获取 JSON 输出 如下所示 costMethod Average fundingDate 2008 10 02 fundingAmount 2510959 95 代替 type sma costMethod Average

随机推荐

  • 禁用 UIPageViewController 滑动 - Swift

    在我的项目中 我使用 UIPageViewController 在 5 个子 UIViewController 之间滑动 在某些子视图控制器中 我需要禁用 UIPageViewController 的滑动手势 以便当用户滑动它时不会更改为其
  • Matplotlib 在 IDE (PyCharm) 中使用时不会更新绘图

    我是 python 新手 刚刚安装了 pyCharm 并尝试运行针对以下问题的测试示例 如何更新 matplotlib 中的绘图 此示例更新绘图以动画显示移动正弦信号 它不是重新绘图 而是更新绘图对象的数据 它可以在命令行中运行 但在 Py
  • NHibernate 3.0:TransactionScope 和自动刷新

    在 NHibernate 3 0 中 FlushMode Auto仅在环境事务下运行时不起作用 即 不启动 NHibernate 事务 应该是 using TransactionScope scope new TransactionScop
  • AngularJS - 从子指令访问父指令属性

    这应该不是一件太难的事情 但我不知道如何最好地做到这一点 我有一个父指令 如下所示 directive editableFieldset function return restrict E scope model replace true
  • 如何从任务管理器的“应用程序”选项卡中隐藏窗口?

    我对 CreateWindowEx 函数有疑问 我有 2 个窗口 一个主窗口和一个弹出窗口 我想要一个弹出窗口隐藏在任何地方 它当前不显示在任务栏中 甚至在 alt tab 菜单中也不可见 但是 它在任务管理器的 应用程序 选项卡上可见 我
  • Netbeans Java 控制台编码 UTF-8 和变音符号

    我的问题是关于使用 NetBeans 7 4 编写的一个小 java 程序 显然存在编码问题 因为我需要处理包含特殊字符 的德语输入 从文件中读取文本就像一个魅力 特殊字符会按预期保存和显示 String fileText new Scan
  • 按下“后退”按钮时 setResult 不起作用

    我试图在按下 后退 按钮后设置结果 我调用 onDestroy Intent data new Intent setResult RESULT OK data 但当谈到 onActivityResult int requestCode in
  • 使 UILabel 可聚焦和可点击 (tvOS)

    我正在尝试实现 6 行高描述标签 并且希望它能够聚焦 理想情况下 这意味着扩展 UILabel 类来制作自定义组件 我尝试通过实施canBecomeFocused and didUpdateFocusInContext但我的 UILabel
  • 如何在 Web 应用程序中从 Azure AD 刷新 ID 令牌?

    我正在尝试设置一个 Azure Web 应用程序以通过 Azure AD 进行身份验证并在后台自动刷新 ID 令牌 一篇很棒的博客文章帮助我了解了整个事情是如何运作的 https cgillum tech 2016 03 07 app se
  • 带有BehaviorSubject和异步管道的RxJS share()运算符 - Angular

    我有一个BehaviorSubject正在被作为可观察的消耗 testForStack Observable
  • 终端元箭头键绑定中的 emacs

    我刚刚从使用 Emacs app 切换到使用 iterm2 作为终端模拟器的终端模式下的 emacs 服务器和 emacsclient 不过 我在某些键绑定方面遇到了一些问题 特别是 M 左箭头打印字符 D M 右箭头打印字符 C M 上箭
  • 没有模拟器的颤振

    我无法在我的工作环境中安装Android模拟器 因此我想知道是否可以在没有任何移动设备 或模拟器 的情况下编码 学习Flutter 例如 是否可以使用浏览器运行 测试代码 有两个非移动选项 目前都处于开发阶段 但可以用于学习 Flutter
  • 不带注释的自动装配@Autowired

    我正在查看工作区中的一些旧示例 我看不出怎么样 自动装配完成 因为没有 Autowired Spring boot facebook 默认配置 Controller RequestMapping public class HelloCont
  • 更改单个 UITableViewCell 的 UITableView seperatorColor

    我有一个UITableView使用各种定制的UITableViewCells 我希望能够让这些表格单元格之一以与其他单元格不同的分隔符颜色显示 我知道tableview seperatorColor更新整体tableView 是否有我缺少的
  • 如何清除 websocket 上的缓冲区?

    看起来 websocket 在断开连接时会缓冲消息 并在连接后立即发送消息 我理解了bufferedAmountwebsocket 的数量正在增加 但它是只读的 有没有办法重置缓冲区 以便在断开连接时发送的消息不会自动发送 我认为您正在寻找
  • 单击链接时 IE 会随机最小化

    我有一个奇怪的问题 当我单击 IE7 中的链接时 窗口最小化 它似乎只是页面上链接的子集 它也不会始终在相同的链接上发生 并且因计算机而异 链接文本示例 a href span Canadian Legislation span a 有人以
  • 从二项式分布生成数字的数值算法

    我需要从二项式 n p 分布生成随机数 Binomial n p 随机变量是 n 个均匀变量的总和 这些变量以 p 的概率取 1 在伪代码中 x 0 for i 0 I
  • Django 反向 url 以及基于类的视图的参数

    我刚刚开始学习 python 和 django 我有一个问题 我接到的任务是将函数视图转换为基于类的视图 但我的链接现在不起作用了 这些来自 urls py url r ContactIndex as view url r add Cont
  • 如何在我的设备上获取 logcat 以显示所有进程的日志

    我正在尝试编写一个应用程序来读取我设备上的所有日志 我有一个客户端 服务架构 并且我看到来自客户端和服务进程的日志消息 但我没有看到来自手机上任何其他应用程序的任何消息 我确实看到使用桌面 logcat 的其他消息 我需要root吗 代码片
  • OneToMany - 连接表和外键之间有什么区别?

    有可能禁用 OneToMany关系连接表与 JoinColumn注解 默认是连接表 例如 生产系统的优点和缺点是什么 什么时候应该使用连接表 什么时候不应该使用 谢谢 默认情况下 OneToMany仅当您使用时才会创建连接表单向关系 换句话