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

共享主键的一对一关联映射 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关联的。

    已采纳该答案
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题