mycell_13651784029 2009-07-06 13:15
浏览 175
已采纳

共享主键的一对一关联映射 Why ?

As we know:

一对一关联有三种情况:(1).关联的实体都共享同样的主键,(2).其中一个实体通过外键关联到另一个实体的主键(注意要模拟一对一关联必须在外键列上添加唯一约束),(3).通过关联表来保存两个实体之间的连接关系(要模拟一对一关联必须在每一个外键上添加唯一约束)。

For Type 1: Here is the example

@Entity
@Table(name="Test_Body")
public class Body {
private Integer id;
private Heart heart;
@Id
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@OneToOne
@PrimaryKeyJoinColumn
public Heart getHeart() {
return heart;
}
public void setHeart(Heart heart) {
this.heart = heart;
}
}
@Entity
@Table(name="Test_Heart")
public class Heart {
private Integer id;
@Id
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
}
通过@PrimaryKeyJoinColumn批注定义了一对一关联

We get two tables:

Test_Body:

id

Test_Heart

id

Those two tables have just only one column "id", no others else. Is that wrong ?

So question is why we should use this sort of mapping ? In what sort of cases we need use this map ?

  • 写回答

1条回答 默认 最新

  • xujunPro 2009-07-06 14:59
    关注

    首先请你以后请教问题用中文,je里面中国人多,如果你习惯e文提问请去国外的网站,关于1对1使用的场景我给你举个例子:比如文件上传表,里面有一个context字段,大字段类型的,那么我们可以这样设计:将文件内容和文件的其他信息分表,作成1对1主键关联,File表和FileContext表,这样我们在load File的时候,context就不需要管了,可以提高性能,并且file的cache处理也很方便。
    HIbernate的思想就是小表多关联,然后用cache撑腰。它是用面象对象的思想考虑你的数据库设计。
    PS:javaeye网站的每个topic的context都是另开一个表,然后和topic1对1关联的。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥50 comsol稳态求解器 找不到解,奇异矩阵有1个空方程返回的解不收敛。没有返回所有参数步长;pid控制
  • ¥15 怎么让wx群机器人发送音乐
  • ¥15 fesafe材料库问题
  • ¥35 beats蓝牙耳机怎么查看日志
  • ¥15 Fluent齿轮搅油
  • ¥15 八爪鱼爬数据为什么自己停了
  • ¥15 交替优化波束形成和ris反射角使保密速率最大化
  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功