hibernate关系映射注解配置.doc
文本预览下载声明
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
显示全部