您的位置:首页 > 其它

传智播客Hibernate视频教程学习笔记22

2009-08-04 20:41 471 查看
多对多关系的检索:

test.java

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

import domain.Student;
import domain.Teacher;
import hibernate.HibernateUtil;

public class test {

/**
* @param args
*/
public static void main(String[] args) {
Teacher t1 = new Teacher();
t1.setName("t1_name");
Teacher t2 = new Teacher();
t2.setName("t2_name");

Student s1 = new Student();
s1.setName("s1_name");
Student s2 = new Student();
s2.setName("s2_name");

Set<Student> ss = new HashSet<Student>();
ss.add(s1);
ss.add(s2);

Set<Teacher> ts = new HashSet<Teacher>();
ts.add(t1);
ts.add(t2);

t1.setStudents(ss);

HibernateUtil.add(s1);
HibernateUtil.add(s2);
HibernateUtil.add(t1);
HibernateUtil.add(t2);

t1 = (Teacher)HibernateUtil.get(Teacher.class, 1);
Iterator<Student> itor = t1.getStudents().iterator();
while(itor.hasNext()){
System.out.println(itor.next().getName());
}
}
}


和以前一样加上禁用懒加载。

Hibernate: select teacher0_.id as id5_0_, teacher0_.name as name5_0_ from Teacher teacher0_ where teacher0_.id=?

根据teacher编号查询teacher信息
Hibernate: select students0_.teacher_id as teacher1_1_, students0_.student_id as student2_1_, student1_.id as id7_0_, student1_.name as name7_0_ from teacher_student students0_ left outer join Student student1_ on students0_.student_id=student1_.id where students0_.teacher_id=?
连接两张表查询teacher中student集合的信息

Hibernate: select teachers0_.student_id as student2_1_, teachers0_.teacher_id as teacher1_1_, teacher1_.id as id5_0_, teacher1_.name as name5_0_ from teacher_student teachers0_ left outer join Teacher teacher1_ on teachers0_.teacher_id=teacher1_.id where teachers0_.student_id=?
连接两张表查询student中teacher集合信息

Hibernate: select teachers0_.student_id as student2_1_, teachers0_.teacher_id as teacher1_1_, teacher1_.id as id5_0_, teacher1_.name as name5_0_ from teacher_student teachers0_ left outer join Teacher teacher1_ on teachers0_.teacher_id=teacher1_.id where teachers0_.student_id=?

连接两张表查询student中teacher集合信息

有四条查询语句了。可见这样的查询效率非常第,这一点也是我非常疑惑的,系统里如果这样设计,学生教师关联的信息量肯定是非常大的,这样子的话,程序不死掉才怪。视频上说一般情况下建立多对一关系,而不需要一对多和多对多了,信息量实在太大了,看来设计方式上还是要好好了解一下,一般情况下的系统是如何设计的,才好下手。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: