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关联的。

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

报告相同问题?

悬赏问题

  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题