一.Annotation方式:
Teacher与Student是多对多的关系。在Teacher持有Student的引用
/*
* Teacher.java
*/
@Entity
public class Teacher {
private int id;
private String name;
private Set<Student> students = new HashSet<Student>();
@ManyToMany
@JoinTable(name="t_s",
joinColumns=@JoinColumn(name="teacher_id"), //指向teacher表的id
inverseJoinColumns=@JoinColumn(name="student_id") //指向student表的id
)
public Set<Student> getStudents() {
return students;
}
public void setStudents(Set<Student> students) {
this.students = students;
}
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
/*
* Student.java
*/
@Entity
public class Student {
private int id;
private String name;
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
二.XML方式:(以上程序去掉注解)
在Teacher.hbm.xml中配置映射关系:
<hibernate-mapping>
<class name="com.szy.hibernate.model.Teacher">
<id name="id">
<generator class="native"></generator>
</id>
<property name="name"></property>
<set name="students" table="t_s">
<key column="teacher_id"></key>
<many-to-many class="com.szy.hibernate.model.Student" column="student_id"/>
</set>
</class>
</hibernate-mapping>
在Student.hbm.xml中配置映射关系:
<hibernate-mapping>
<class name="com.szy.hibernate.model.Student">
<id name="id">
<generator class="native"></generator>
</id>
<property name="name"></property>
</class>
</hibernate-mapping>