传智播客Hibernate视频教程学习笔记22
2009-08-04 20:41
471 查看
多对多关系的检索:
test.java
和以前一样加上禁用懒加载。
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集合信息
有四条查询语句了。可见这样的查询效率非常第,这一点也是我非常疑惑的,系统里如果这样设计,学生教师关联的信息量肯定是非常大的,这样子的话,程序不死掉才怪。视频上说一般情况下建立多对一关系,而不需要一对多和多对多了,信息量实在太大了,看来设计方式上还是要好好了解一下,一般情况下的系统是如何设计的,才好下手。
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集合信息
有四条查询语句了。可见这样的查询效率非常第,这一点也是我非常疑惑的,系统里如果这样设计,学生教师关联的信息量肯定是非常大的,这样子的话,程序不死掉才怪。视频上说一般情况下建立多对一关系,而不需要一对多和多对多了,信息量实在太大了,看来设计方式上还是要好好了解一下,一般情况下的系统是如何设计的,才好下手。
相关文章推荐
- 传智播客Hibernate视频教程学习笔记1
- 传智播客Hibernate视频教程学习笔记6
- 传智播客Hibernate视频教程学习笔记18
- 传智播客Hibernate视频教程学习笔记20
- 传智播客Hibernate视频教程学习笔记24
- 传智播客Hibernate视频教程学习笔记25
- 传智播客Hibernate视频教程学习笔记27
- 传智播客Hibernate视频教程学习笔记31
- 传智播客Hibernate视频教程学习笔记39
- 传智播客Hibernate视频教程学习笔记46
- 传智播客Hibernate视频教程学习笔记47
- 传智播客Hibernate视频教程学习笔记55
- 传智播客Hibernate视频教程学习笔记14
- 传智播客Hibernate视频教程学习笔记21
- 传智播客Hibernate视频教程学习笔记35 36 37
- 传智播客Hibernate视频教程学习笔记2
- 传智播客Hibernate视频教程学习笔记10 11 12 13
- 传智播客Hibernate视频教程学习笔记15
- 传智播客Hibernate视频教程学习笔记32
- 传智播客Hibernate视频教程学习笔记41