Hibernate实体Bean一对一映射

 

建立实体Bean之间的一对一的关联可以使用@OneToOne注解。一对一关联有以下三种方式:

1 关联的实体都共享同样的主键;

2 二是其中一个实体通过外键关联到另一个实体的主键

3 三是通过关联表来保存两个实体之间的连接关系。

下面就是一个通过共享主键来进行一对一关联映射的例子,代码如下:

@Entity

public class Person {

    @Id

    public Long getId() { return id; }

    @OneToOne(cascade = CascadeType.ALL)

    @PrimaryKeyJoinColumn

    public IDcard getIdcard() {

        return idcard;

    }

    ...

}

上面定义了一个Person类,一个人对应一个身份证类IDcard,该类的实现代码如下:

@Entity

public class IDcard {

    @Id

    public Long getId() { ...}

}

在上面例子中,通过使用注解@PrimaryKeyJoinColumn定义了一对一关联。

下面这个例子使用外键列进行实体的关联,代码如下:

@Entity

public class Customer implements Serializable {

    @OneToOne(cascade = CascadeType.ALL)

    @JoinColumn(name="passport_fk")

    public Passport getPassport() {

        ...

    }

 

@Entity

public class Passport implements Serializable {

    @OneToOne(mappedBy = "passport")

    public Customer getOwner() {

    ...

}

在上面这个例子中,Customer 通过Customer 表中名为的passport_fk 外键列和 Passport关联, @JoinColumn注解定义了联接列,该注解和@Column注解有点类似, 但是多了一个名为referencedColumnName的参数, 该参数定义了所关联目标实体中的联接列。

作者提示referencedColumnName关联到非主键列的时候,关联的目标类必须实现Serializable,还要注意的是所映射的属性对应单个列(否则映射无效)

一对一关联可能是双向的,在双向关联中, 有且仅有一端是作为主体(owner)端存在的。主体端负责维护联接列(即更新),对于不需要维护这种关系的从表则通过mappedBy属性进行声明。mappedBy的值指向主体的关联属性。 在上面这个例子中,mappedBy的值为 passport。如果在主体没有声明@JoinColumn,系统自动进行处理。 在主表中将创建联接列, 列名为主体的关联属性名+下划线+被关联端的主键列名。 在上面这个例子中是passport_id, 因为Customer中关联属性名为passport, Passport的主键是id

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hibernate是一个Java持久化框架,它能够将Java对象映射到数据库中的表格,同时支持各种关系数据库,如MySQL、Oracle等。在Hibernate中,对于一对一、一对多和多对多的关系,我们可以通过以下方式进行映射一对一关系:在Hibernate中,可以通过主键关联和外键关联来实现一对一关系的映射。主键关联是指两个实体之间的关联通过主键来进行,可以使用@PrimaryKeyJoinColumn注解将两个实体关联起来。外键关联是指通过一个实体引用另一个实体的主键作为外键,使用@JoinColumn注解来指定外键属性。 一对多关系:在Hibernate中,一对多关系通常通过外键关联来实现。在一的一方,使用@OneToMany注解来定义一对多关系,同时使用@JoinColumn注解指定外键属性。在多的一方,使用@ManyToOne注解来定义多对一关系,并使用@JoinColumn注解指定外键属性。 多对多关系:在Hibernate中,多对多关系通常通过中间表来实现。在多对多的两个实体中,使用@ManyToMany注解来定义多对多关系。同时,需要在中间表中创建两个外键,分别与两个实体的主键关联,并使用@JoinTable注解来指定中间表的表名和两个外键的列名。 总结:通过Hibernate的注解方式,可以方便地实现一对一、一对多和多对多关系的映射。通过合理地使用注解,可以减少编写映射文件的工作量,提高开发效率。同时,Hibernate还提供了在运行时自动生成表结构的功能,可以根据Java实体来动态创建或更新对应的数据库表格,从而提高系统的可维护性和灵活性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值