[Hibernate步步为营]--单向关联之一对多映射(二)
2014-11-23 19:29:05
·
作者:
·
浏览: 33
Set;
import com.src.hibernate.*;
import junit.framework.TestCase;
import org.hibernate.Session;
public class One2ManyTest extends TestCase {
public void testLoad1(){
Session session=null;
try{
session=HibernateUtils.getSession();
session.beginTransaction();
//获取主键为5的班级信息
Classes classes=(Classes)session.load(Classes.class,5);
//打印班级信息
System.out.println("classes.name="+classes.getName());
//设置学生集合,通过班级加载学生集合
Set students=classes.getStudents();
//迭代集合,打印集合中学生的信息
for(Iterator iter=students.iterator();iter.hasNext();){
Student student=(Student)iter.next();
System.out.println("student.name="+student.getName());
}
session.getTransaction().commit();
}catch(Exception e){
e.printStackTrace();
session.getTransaction().rollback();
}finally{
HibernateUtils.closeSession(session);
}
}
}
生成的相应的语句及信息如下语句:
Hibernate: select classes0_.id as id1_0_, classes0_.name as name1_0_ from t_classes classes0_ where classes0_.id=
classes.name=ClassOne
Hibernate: select students0_.classesid as classesid1_, students0_.id as id1_, students0_.id as id0_0_, students0_.name as name0_0_ from t_student students0_ where students0_.classesid=
student.name=lisi
student.name=zhangsan
结语
一对多的关系也是经常用到的,但是这种关系在加载时效率会不高,因为需要维护的数据较多,所以不建议使用一对多的关系,可以考虑多对一的关系,这样在加载时其实是一种一对一的关系,加载的效率较高,关系和对象模型得到了优化。这里只是讨论了单向的一对多,下篇文章讨论双向的关联关系。