java - 复合键的复合键

标签 java mysql sql hibernate jpa

我正在尝试了解为我正在创建的数据模型采用何种方法。我有两个最初使用复合键创建的表。我现在要添加一个第三个表,它是前两个表的连接表,这将导致一个包含三个字段的复合键和两个外键,每个外键有 2 个字段。这可能会在 MySQL 中并与某种 Java 持久性框架一起使用。我一直喜欢使用复合键,因为它似乎是一种更自然的数据表示方式,但我想确保以后不会让自己陷入痛苦的境地。我应该继续使用提到的方法还是只在表上创建一些自动递增的 ID?

最佳答案

Hibernate 建议使用纯技术的、自动生成的、非复合键(纯连接表除外)。并且有充分的理由,IMO。

使用复合键,您的映射会更加困难。由于更复杂的索引,性能将降低。一般的编程会更难,因为你不能只用一个长整数来识别给定的实体,你需要两个或三个长整数(想想 URL 和表单,例如,你必须在其中放置两个或三个参数/您的 URL/表单的隐藏字段)。

当然,如果键是可用的,那就更糟了,因为有时您将不得不更改主键的一部分,这将迫使您更新对该主键的所有引用。

关于java - 复合键的复合键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10651647/

相关文章:

java - 有没有办法从过滤器中的 http 请求获取 post 参数,同时保持 servlet 的输入流完整?

php - 根据用户的输入构建查询? php、mysql、sql

mysql - 从 SQL 中的单列返回所有唯一可能组合的 PAIR

mysql - 我能知道相关子查询是什么意思吗?

mysql - 升级 django 时出现 django.db.migrations.exceptions.NodeNotFoundError

mysql - 自定义 AUTO INCREMENT 值不起作用

java - 使用 Spring Data 4 JPA 自定义保存方法

java - 使用 Jacob 1.18 从 Java 调用宏

java - Xuggler 在 64 位中导致 JVM 崩溃

php - 将 SQL 查询更改为 Eloquent 查询