hibernate对象关系映射

本文介绍了Java中实体类通过一对一关联实现双向外键关联的方法,并展示了如何使用@OneToOne和@JoinColumn注解来实现健康档案与学生的关联。此外,还讲解了组件映射的概念,即在一个实体类中嵌套另一个实体类的部分属性。

一对一双向外键关联:

单向双向针对在java程序中。

一个健康档案HealthFile 对应一个学生DictStudent ,一个学生对应一个健康档案。两边都存在引用,健康档案作为主导, 则在主导表中生成字段,student表中没有引用字段。

凡是双向关联

@Entity
@Table(name = "health_file")
@SequenceGenerator(name = "sequenceGenerator", sequenceName = "health_file_sequence")
public class HealthFile extends BaseEntity
{
     /** 隶属学生 */
    private DictStudent dictStudent;

    @OneToOne(fetch = FetchType.LAZY)
    @JoinColumn(nullable = false)
    public DictStudent getDictStudent()
    {
        return dictStudent;
    }
    public void setDictStudent(DictStudent dictStudent)
    {
        this.dictStudent = dictStudent;
    }
}
@Entity
@Table(name = "student")
@SequenceGenerator(name = "sequenceGenerator", sequenceName = "student_sequence")
public class DictStudent extends BaseEntity
{ 

    /**健康档案*/
    private HealthFile healthFile;

    @OneToOne(mappedBy = "dictStudent", fetch = FetchType.LAZY)
    @JoinColumn(name = "dictStudent")
    public HealthFile getHealthFile()
    {
        return healthFile;
    }

    public void setHealthFile(HealthFile healthFile)
    {
        this.healthFile = healthFile;
    }
}

health_file表:
这里写图片描述


组件映射:

一个组件作为另个组件的一部分。

@Entity
@Table(name = "member")
@SequenceGenerator(name = "sequenceGenerator", sequenceName = "member_sequence")
public class Member extends BaseEntity
{
     /** 安全密匙 */
    private SafeKey safeKey;

     /**
     * 获取安全密匙
     */
    @Embedded
    public SafeKey getSafeKey()
    {
        return safeKey;
    }

    /**
     * 设置安全密匙
     */
    public void setSafeKey(SafeKey safeKey)
    {
        this.safeKey = safeKey;
    }
}
/**
 * Entity - 安全密钥
 */
@Embeddable
public class SafeKey implements Serializable
{

    private static final long serialVersionUID = -8536541568286987548L;

    /** 密钥 */
    private String value;

    /** 到期时间 */
    private Date expire;

    //省略get set
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值