hibernate关系映射注解配置_第1页
hibernate关系映射注解配置_第2页
hibernate关系映射注解配置_第3页
hibernate关系映射注解配置_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Hibernate Annotation关系映射有下面几种类型:1)一对一外键关联映射(单向)2)对一外键关联映射(双向)3)一对一主键关联映射(不重要,有需要看下文档即可)在实际中很少用,使用注解PrimaryKeyJoinColumn意思是说,我的主键去参考另外一张表中的主键,作为我的主键,但是在我测试使用 注解一对一主键关联映射,在生成表的时候,数据库中并没有生成关联,使用XML 映射可以生成。Annotation注解一对一主键关联映,有些bug。不过没空去研究它。 因为在实际开发中一对一很少用。在实际开发中我机会没有用过,主键关联就更少了4)多对一关联映射(单向)5)对多关联映射(单向

2、)6)对多关联映射(双向)7)多对多关联映射(单向)8)多对多关联映射(双向)介绍各种映射用法1)一对一外键关联映射(单向)Husband Wifepublic class Husbandprivate Wife wife;OneToOne(cascade二CascadeType.ALL)JoinColumn(name=wife_id,unique二true)public Wife getWife()public class Wife一对一外键关联,使用OneToOne,并设置了级联操作JoinColum设置了外键的名称为wife_id (数据库字段名),如果不设置,则默认为另一类的属性名 +

3、 _id外键的值是唯一的(unique),不可重复,与另一类的主键一致2)一对一外键关联映射(双向)Husband Wifepublic class Husbandprivate Wife wife;OneToOne(cascade二CascadeType.ALL)JoinColumn(name=wife_id,unique二true)public Wife getWife().public class Wifeprivate Husband husband;OneToOne(mappedBy=wife,cascade二CascadeType.ALL)public Husband getHus

4、band().一对一双向关联关系,使用OneToOne注意:需要加上mappedBy=wife,如果不加上的话,Wife也会生成一个外键(husband_id)。mappedby=wife需要指向与他关联对象的一个属性(即Husband类里面的wife属性),这里的会在Husband表里面生成个外键wife_id字段,而Wife表里则不会生成。这里Husband作为维护端即主 体端,Wife作为被维护端。说明双向关联关系中,有且仅有一端是作为主体(owner)端存在的规律:只要是双向关联关系,都加上mappedbycascade=CascadeType.ALL 级联多对一关联映射(单向)Stu

5、dents Grouppublic class Students private Group group;ManyToOne(targetEntity= Group.class)JoinColumn(name=group_id)public Group getGroup()public class Group多对一注解ManyToOnetargetEntity指定了关联对象JoinColumn(name=Group_id)指定生产的外键的字段名,默认是Group_id一对多关联映射(单向)Group Studentspublic class Groupprivate Set students

6、= new HashSet(0);OneToManyJoinColumn(name=group_id)public Set getStudents() public class Students一对多注解OneToMany (单向)如果只写OneToMany的话,hibernate会建一张中间表来维护他们之间的关系,加上JoinColumn(name=Group_id),则不会建中间表,他会在多的一端加上外键Group_id,来维护他们之间的关系一对多关联映射(双向)Group Studentspublic class Groupprivate Set students = new HashS

7、et(0);OneToMany(mappedBy=group)JoinColumn(name=group_id)public Set getStudents() public class Studentsprivate Group group;ManyToOneJoinColumn(name=group_id)public Group getGroup()一端:OneToMany(mappedBy=group) JoinColumn(name=group_id) 一对多双向,在一的一端中设置mappedBy 说明多的一端为主导 如果指定了外键字段名称,则多的一端也需要指定相同的字段名称多端:M

8、anyToOneJoinColumn(name=group_id)一对多双向需要指定外键与一的一端给的外键名称一致,JoinColumn(name=group_id) 也可以不指定,如果在多的一端不指定,则一的一端也不能指定 否则为生成两个外键多对多关联映射(单向)Teachers Studentspublic class Teachersprivate Set students = new HashSet(0);ManyToManyJoinTable(name=Teacher_Students, joinColumns=JoinColumn(name= students_id), inver

9、seJoinColumns=JoinColumn(name=teachers_id ) )public Set getStudents() public class StudentsManyToMany多对多映射:注解ManyToMany (单向)默认情况下,hibernate会自动的创建一张中间表,来维护多对多关系默认中间表的名称:Teacher_Students中间表,字段的名称teachers_id , students_id 如果想更换表名和字段名称,注解如下:ManyToManyJoinTable(name=Teacher_Students,joinColumns=JoinColum

10、n(name= students_id), inverseJoinColumns=JoinColumn(name=teachers_id ) )JoinTable(name=Teacher_Students, 指定中间表的表名joinColumns=JoinColumn(name=students_id),指定当前对象的外键inverseJoinColumns=JoinColumn(name=teachers_id ) 指定关联对象的外键多对多关联映射(双向)Teachers Studentspublic class Teachersprivate Set students = new HashSet(0);ManyToManyJoinTable(name=Teacher_Students,joinColumns=JoinColumn(name=teachers_id), inverseJoinColumns =JoinColumn(name=students_id) )public Set getStudents() public class Studentsprivate Set teachers = new HashSet(0);ManyToMany(map

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论