Hibernate学习手记(5)--关联映射
来源:互联网 发布:刘嘉忆造假知乎 编辑:程序博客网 时间:2024/06/06 17:01
关于Hibernate的关联映射(annotation专版)
举一典型到老掉牙的例子说明:Teacher、Student与Course之间的关系。
Teacher与Course是一对一关系;
Student与Course是一对多关系;
Teacher与Student是多对多关系;
....................
@Entity
@Table(name="Student")
public class Student {
private int id;
private String name;
private String sex;
private Course course;
private Set<Teacher> teachers = new HashSet<Teacher>();
//建立Student与Teacher的双向多对多关联
@ManyToMany(mappedBy="students")
public Set<Teacher> getTeachers() {
return teachers;
}
public void setTeachers(Set<Teacher> teachers) {
this.teachers = teachers;
}
//单向多对一关联
@ManyToOne
public Course getCourse() {
return course;
}
public void setCourse(Course course) {
this.course = course;
}
@Id
@Column(name="s_id")
public int getId() {
return id;
}
@Column(name="s_name")
public String getName() {
return name;
}
@Column(name="s_sex")
public String getSex() {
return sex;
}
.............
}
..............................................
@Entity
@Table(name="Teacher")
public class Teacher {
private int id;
private String name;
private String sex;
private String title;
private Course course;
private Set<Student> students = new HashSet<Student>();
//Teacher与Student的单向多对多联系
@ManyToMany
@JoinTable(name="t_s",
joinColumns={@JoinColumn(name="t_id")},
inverseJoinColumns={@JoinColumn(name="s_id")}
)
//设置多对多关系的中间表,其中joinColumns属性里面指向本实体数据表的关联字段,
//inverseJoinColumns属性则指向中间表的另一关联字段对应的数据表的关联字段
public Set<Student> getStudents() {
return students;
}
public void setStudents(Set<Student> students) {
this.students = students;
}
//Teacher与Course的一对一关联
@OneToOne
@JoinColumn(name="Course_id")
//JoinColumn,指定Course表的外键
public Course getCourse() {
return course;
}
public void setCourse(Course course) {
this.course = course;
}
@Id
@Column(name="t_id")
public int getId() {
return id;
}
@Column(name="t_name")
public String getName() {
return name;
}
@Column(name="t_sex")
public String getSex() {
return sex;
}
@Column(name="t_title")
public String getTitle() {
return title;
}
..................
}
..........................
@Entity
@Table(name="Course")
public class Course {
private int id;
private String name;
private String score;
private Set<Student> student = new HashSet<Student>();
private Teacher teacher;
/*
* 为实现双向的一对一关联,添加属性mappedBy,使确定该实体被映射在teacher中的course属性上,主导放在多的一方
* */
@OneToOne(mappedBy="course")
public Teacher getTeacher() {
return teacher;
}
public void setTeacher(Teacher teacher) {
this.teacher = teacher;
}
/*
* 为实现双向的多对一关联,添加属性mappedBy,使确定该实体被映射在student中的course属性上,主导放在多的一方
* */
@OneToMany(mappedBy="course")
//单向一对多关联
//@JoinColumn(name="Course_id")
public Set<Student> getStudent() {
return student;
}
public void setStudent(Set<Student> student) {
this.student = student;
}
@Id
@Column(name="c_id")
public int getId() {
return id;
}
@Column(name="c_name")
public String getName() {
return name;
}
@Column(name="c_score")
public String getScore() {
return score;
}
...................
}
以下是Junit测试的一个方法,用来查看Hibernate生成SQl脚本的
@Test
public void testSchemaExport(){
new SchemaExport(
new AnnotationConfiguration().configure())
.create(true, true);
}
- Hibernate学习手记(5)--关联映射
- Hibernate关联映射(5)
- Hibernate 学习经验之谈-(四)关联映射
- Hibernate学习20 -- 关联映射10 -- 组件映射(component)
- Hibernate学习手记(2)--单向一对多映射
- Hibernate关联映射学习笔记
- Hibernate学习---关联关系映射
- Hibernate学习笔记(3)---hibernate关联关系映射
- Hibernate学习之---Hibernate的关联映射
- Hibernate入门(5):关联映射&继承映射
- Hibernate关联映射(转)
- Hibernate的映射(关联)
- hibernate 关联映射(2)
- Hibernate关联映射(1)
- Hibernate映射关联(2)
- Hibernate学习15 -- 关联映射5 -- 多对多关联1 -- 多对多关联单向
- Hibernate学习笔记(5):多对一关联映射
- Hibernate学习总结(3)——关联映射
- mysql导出(备份)单张表,mysql备份指定表
- Mac地址修改方法
- dfsdfsd
- hashmap例子
- 常用集合类线程同步安全
- Hibernate学习手记(5)--关联映射
- Linux下应用Mono配置Asp.NET服务
- c++BUILDER 中如何把汉字转换成拼音
- Oracle使用手册(一)---声明变量
- 全站关键字搜索
- 一个将ubuntu睡眠的小脚本
- 《Mono: A Developer’s Notebook》
- Linux popen函数的使用总结
- 不错的面试题目博客