hibernate 最好是 配置多对多的。 不然关系不确定,
hibernate 就是可以配置完之后, SQL语句其实都可以不用写的。
直接从A中get B 得到 B的set
然后通过C。。 知道了吧
给你举个教师与课程的例子,这就是多对多的关系:
java类:
teacher:
public class Teacher {
private Integer tId;
private String tName;
private Set<Course> courses;
public Integer gettId() {
return tId;
}
public void settId(Integer tId) {
this.tId = tId;
}
public String gettName() {
return tName;
}
public void settName(String tName) {
this.tName = tName;
}
public Set<Course> getCourses() {
return courses;
}
public void setCourses(Set<Course> courses) {
this.courses = courses;
}
}
Course:
public class Course {
private Integer cId;
private String cName;
private Set<Teacher> teachers;
private Set<Student> students;
public Integer getcId() {
return cId;
}
public void setcId(Integer cId) {
this.cId = cId;
}
public String getcName() {
return cName;
}
public void setcName(String cName) {
this.cName = cName;
}
public Set<Teacher> getTeachers() {
return teachers;
}
public void setTeachers(Set<Teacher> teachers) {
this.teachers = teachers;
}
public Set<Student> getStudents() {
return students;
}
public void setStudents(Set<Student> students) {
this.students = students;
}
}
hbm文件:
teacher:
<hibernate-mapping package="com.lee.vo">
<class name="Teacher" table="TEACHER">
<id name="tId" type="java.lang.Integer" column="id">
<generator class="native" />
</id>
<property name="tName" type="java.lang.String" column="TNAME"/>
<set name="courses" table="TEACHER_COURSE">
<key column="tId"/>
<many-to-many class="com.lee.vo.Course" column="cId"></many-to-many>
</set>
</class>
</hibernate-mapping>
crouse :
<hibernate-mapping package="com.lee.vo">
<class name="Course" table="COURSE">
<id name="cId" type="java.lang.Integer" column="id">
<generator class="native" />
</id>
<property name="cName" type="java.lang.String" column="CNAME"/>
<set name="teachers" table="TEACHER_COURSE">
<key column="cId" />
<many-to-many class="com.lee.vo.Teacher" column="tId" />
</set>
<set name="students" table="TEACHER_COURSE">
<key column="cId" />
<many-to-many class="Student" column="sId" />
</set>
</class>
</hibernate-mapping>
使用many-to-many 属性,可以直接得到teacher所教的课程,也可以得到某个课程由哪些教师教。
main:
Session se = HibernateUtil.getSession();
Teacher teacher = (Teacher)se.get(Teacher.class,1);
Set<Course> set =teacher.getCourses();
Iterator<Course> it =set.iterator();
while(it.hasNext()){
System.out.println(it.next().getCname());
}
hibernate将sql封装在底层,你不需要直接操作SQL,而是采取面向对象的方式来直接调用,很方便的。
用户登录
还没有账号?立即注册
用户注册
投稿取消
文章分类: |
|
还能输入300字
上传中....