hibernate05--list和iterator
Posted 小葱拌豆腐
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hibernate05--list和iterator相关的知识,希望对你有一定的参考价值。
/** * * @author 小豆腐 * 以后的你,会感谢现在努力的自己!努力!坚持!不放弃! */ public class StudentTest { Configuration configuration = null; SessionFactory sessionFactory = null; Session session = null; Transaction transaction = null; // 测试方法有相同的代码块 @Before public void before() { // 01.加载配置文件(hibernate.cfg.xml) 必须位于src的根目录下 configuration = new Configuration().configure(); // 02.创建会话工厂 设置成单例模式 sessionFactory = configuration.buildSessionFactory(); // 03.通过工厂创建会话session HttpSession(用户session) session = sessionFactory.openSession(); // 04.利用面向对象的思想来操作数据库 增删改都必须开启事务 transaction = session.beginTransaction(); } @After //关闭session public void after(){ //查询中没有session 做非空验证 if (session!=null) { // 05.关闭session session.close(); } } /** * HQL:hibernate的查询语言! * * 执行hql语句的步骤: * 01.获取session * 02.书写hql语句 * 03.session.CreatQuery(hql);创建 Query对象 * 04.执行查询 * * * list():不管我们清不清空缓存 只要是list()就立即查询数据库 产生一条select语句! */ @Test public void testList(){ //String sql="select * from stu"; stu 是表名 String hql="from Student"; //Student 必须是类名 //获取query对象 Query query = session.createQuery(hql); //开始查询 System.out.println("**************"); List list= query.list(); // 只有一条sql语句 System.out.println("**************"); for (Object object : list) { System.out.println(object); } session.clear(); //清空缓存 // 不管我们清不清空缓存 只要是list()就立即查询数据库 产生select语句 List list2= query.list(); } /** * Iterator(): * 01.在没有缓存的情况下 执行N+1条查询语句 * 第一条查询id的语句 在query.iterate(); 时候产生! * 其余的N条语句都是在iterate.hasNext()时候产生! * N代表数据库中的总记录数 */ @Test public void testIterator(){ String hql="from Student"; //Student 必须是类名 Query query = session.createQuery(hql); System.out.println("**************"); Iterator iterate = query.iterate(); System.out.println("**************"); while (iterate.hasNext()) { Object object = (Object) iterate.next(); System.out.println(object); } } /** * 02.有缓存的情况 * 查询所有的学生信息! * iterate():执行一条sql语句! */ @Test public void testIterator2(){ String hql="from stu"; Query query = session.createQuery(hql); List list = query.list(); // 现在 已经产生sql语句 所有的student已经在session缓存中了 System.out.println("*********************"); Iterator iterate = query.iterate(); System.out.println("*********************"); while (iterate.hasNext()) { Object object = (Object) iterate.next(); System.out.println(object); } } /** * get :产生1条 * iterate():产生1条 * iterate.hasNext():产生3条 */ @Test public void testIterator3(){ Student stu= (Student) session.get(Student.class, 1); //现在缓存中有ID为1的对象 String hql="from Student"; Query query = session.createQuery(hql); Iterator iterate = query.iterate(); System.out.println("*********************"); while (iterate.hasNext()) { Object object = (Object) iterate.next(); System.out.println(object); } } }
以上是关于hibernate05--list和iterator的主要内容,如果未能解决你的问题,请参考以下文章