文档详情

hibernate关系映射注解配置.doc

发布:2017-04-17约4.46千字共4页下载文档
文本预览下载声明
1. Hibernate Annotation关系映射有下面几种类型: 1)一对一外键关联映射(单向) 2)一对一外键关联映射(双向) 3)一对一主键关联映射(不重要,有需要看下文档即可) 在实际中很少用,使用注解@PrimaryKeyJoinColumn 意思是说,我的主键去参考另外一张表中的主键,作为我的主键,但是在我测试使用 注解一对一主键关联映射,在生成表的时候,数据库中并没有生成关联,使用XML 映射可以生成。Annotation注解一对一主键关联映,有些bug。不过没空去研究它。 因为在实际开发中一对一很少用。在实际开发中我机会没有用过,主键关联就更少了 4)多对一关联映射(单向) 5)一对多关联映射(单向) 6)一对多关联映射(双向) 7)多对多关联映射(单向) 8)多对多关联映射(双向) 2.介绍各种映射用法 1)一对一外键关联映射(单向)Husband --- Wife public class Husband{ private Wife wife; @OneToOne(cascade=CascadeType.ALL) @JoinColumn(name=wife_id,unique=true) public Wife getWife(){…} … } public class Wife{ } 一对一外键关联,使用@OneToOne,并设置了级联操作 @JoinColum设置了外键的名称为wife_id(数据库字段名),如果不设置,则默认为另一类的属性名+ _id 外键的值是唯一的(unique),不可重复,与另一类的主键一致 2)一对一外键关联映射(双向)Husband --- Wife public class Husband{ private Wife wife; @OneToOne(cascade=CascadeType.ALL) @JoinColumn(name=wife_id,unique=true) public Wife getWife(){…} ... } public class Wife{ private Husband husband; @OneToOne(mappedBy=wife,cascade=CascadeType.ALL) public Husband getHusband(){…} ... } 一对一双向关联关系,使用@OneToOne 注意:需要加上mappedBy=wife,如果不加上的话,Wife也会生成一个外键(husband_id)。 mappedby=wife需要指向与他关联对象的一个属性(即Husband类里面的wife属性),这里的会在Husband表里面生成个外键wife_id字段,而Wife表里则不会生成。这里Husband作为维护端即主体端,Wife作为被维护端。 说明双向关联关系中,有且仅有一端是作为主体(owner)端存在的 规律:只要是双向关联关系,都加上mappedby cascade=CascadeType.ALL级联 4)多对一关联映射(单向)Students --- Group public class Students { private Group group; @ManyToOne(targetEntity= Group.class) @JoinColumn(name=group_id) public Group getGroup(){…} … } public class Group{ } 多对一注解@ManyToOne targetEntity指定了关联对象 @JoinColumn(name=Group_id)指定生产的外键的字段名,默认是Group_id 5)一对多关联映射(单向)Group --- Students public class Group{ private SetStudents students = new HashSetStudents(0); @OneToMany @JoinColumn(name=group_id) public SetStudents getStudents() {…} … } public class Students{ } 一对多注解@OneToMany(单向) 如果只写@OneToMany的话,hibernate会建一张中间表来 维护他们之间的关系, 加上@JoinColumn(name=Group_id),则不会建中间表,他会在 多的一端加上外键Group_id,来维护他们之间的关系 6)一对多关联映射(双向)Group --- Students public class Group{ private SetStudents students = new HashSet
显示全部
相似文档