美文网首页Java后端生活程序员
Hibernate注解(三)关系映射级别注解

Hibernate注解(三)关系映射级别注解

作者: leeqico | 来源:发表于2018-06-29 11:21 被阅读3次

    一、关系映射级别注解

    1、一对一单向外键关联

    2、一对一双向外键关联

    3、一对一单向外键联合主键

    4、多对一单向外键关联

    5、一对多单向外键关联

    6、一对多双向外键关联

    7、多对多单向外键关联

    8、多对多双向外键关联

    二、实体之间的映射关系

    一对一:一个公民对应一个身份证号码

    一对多(多对一):一个公民有多个银行帐号

    多对多:一个学生有多个老师,一个老师有多个学生。

    三、一对一单向外键关联

    (1)@OneToOne(cascade=CascadeType.ALL):参数为级联关系

    (2)@JoinColumn(name="xx",unique=true):参数name为被控类主键,unique标识该主键唯一

    xx是被控类的主键,主控类的外键

    注意:保存时应该先保存外键对象,再保存主表对象

    (1)新建一个工程RelationshipAnnotation,导入包

    (2)实体类

    (3)hibernate的配置文件

    (4)创建测试类,输出表结构

    (5)控制台的打印

    (6)表结构

    身份证表

    学生表

    (7)增加一条记录

    四、一对一双向外键关联

    其他的跟一对一单向一样

    五、一对一双向外键联合主键

    创建主键类

    主键类必须实现serializable接口,重写hashCode()和equals方法。

    主键类:@Embeddable

    实体类:@EmbeddedId

    具体实现步骤请参考第二章内容

    六、多对一单向外键关联

    多方持有一方的引用,比如:多个学生对应一个班级(多对一)

    @ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)

    @JoinColumn(name = "cid", referencedColumnName = "CID")

    要知道@JoinColulmn是干什么的,@ManyToOne只是定义了一种关系,以及关系的维护,但并未指明建立关系的对应列,所以@JoinColumn中的name为当前类的属性名,(多对一单向,有多方维护)所以,name为student中的cid,而ReferenceColumnName为引用表的列(多对一单向,所以为一方的引用列)即ClassRoom中的主键列

    新增一条记录

    缺少这个

    加上这个就可以了

    重新新增

    七、一对多单向外键关联

    一方持有多方的集合,一个班级有多个学生(一对多)

    @OneToMany(cascade={CascadeType.ALL},fetch=FetchType.LAZY)

    JoinColumn(name="cid"):此处中的name为设定多方中外键的列名

    八、一对多(多对一)双向外键

    以上保持不变

    九、多对多单向外键关联

    学生和教师构成多对多的关联关系

    其中一个多方持有另一个多方的集合对象(学生持有教师的集合)

    创建中间表

    学生(有外键)为主控方,教师(配置主键及生成策略)为被控方。

    在学生表中的教师集合上加注解,

    @ManyToMany

    @Jointable(name="teachers_students"

    joinColumns={@joincolumn(name="sid")},

    inverseJoinColumns={@JoinColumn(name="tid")}

    新增记录

    十、多对多双向外键关联

    (1)双方持有对方的集合对象,其中一方设置

    @ManyToMany(mappedBy="teachers")这里指的是映射的属性名(在主控类student中),正是通过这个这个属性才最终完成了双向映射。将主控方交给学生来处理,相当于把控制权抛出。

    根据上面的多对多单向外键关联的案例,只需在teacher实体类加上student集合属性,再在上面添上如下注解,就可以实现多对多双向外键关联了。其他保持不变。

    相关文章

      网友评论

        本文标题:Hibernate注解(三)关系映射级别注解

        本文链接:https://www.haomeiwen.com/subject/mqhnyftx.html