(19)list OR iterator

//类在(15)QL1中

/*
     * 现阶段:用list即可。!!!!
     */

    /*list:直接获取对象
     *     select  category0_.id as id0_,category0_.name as name0_   from  Category category0_
     */
    @Test
    public void HQ_list() {

        Session session=sf.getCurrentSession();
        session.beginTransaction();
        Query q=session.createQuery("from Category  ");
        List<Category> topics=(List<Category>)q.list();
        for(Category t:topics){
            System.out.println(t.getName());

        }
        session.getTransaction().commit();
    }
    /*iterator
     * 先获取到id
     *  select   category0_.id as col_0_0_   from  Category category0_
     *当用到除id外其他的属性使,才去select该对象完整信息
     *  select category0_.id as id0_0_, category0_.name as name0_0_  from  Category category0_    where   category0_.id=?
     *   
     */
    @Test
    public void HQ_iterator() {

        Session session=sf.getCurrentSession();
        session.beginTransaction();
        Query q=session.createQuery("from Category  ");
        Iterator<Category> categorys=(Iterator<Category>)q.iterate();
        while(categorys.hasNext()){
            System.out.println(categorys.next().getName());
            //System.out.println(categorys.next().getId());
        }
        session.getTransaction().commit();
    }

    /*list:直接获取对象。一个session中两个select相同的语句,并不利用缓存
     *     所以会select两次
     */
    @Test
    public void HQ_list2() {

        Session session=sf.getCurrentSession();
        session.beginTransaction();
        Query q=session.createQuery("from Category  ");
        List<Category> topics=(List<Category>)q.list();
        for(Category t:topics){
            System.out.println(t.getName());

        }

        List<Category> topics2=(List<Category>)q.list();
        for(Category t:topics2){
            System.out.println(t.getName());

        }
        session.getTransaction().commit();
    }
    /*iterator
     * 会利用session的缓存机制,只会取一次。
     */
    @Test
    public void HQ_iterator2() {

        Session session=sf.getCurrentSession();
        session.beginTransaction();
        Query q=session.createQuery("from Category  ");
        Iterator<Category> categorys=(Iterator<Category>)q.iterate();
        while(categorys.hasNext()){
            System.out.println(categorys.next().getName());
            //System.out.println(categorys.next().getId());
        }

        Iterator<Category> categorys2=(Iterator<Category>)q.iterate();
        while(categorys2.hasNext()){
            System.out.println(categorys2.next().getName());
            //System.out.println(categorys.next().getId());
        }
        session.getTransaction().commit();
    }
posted @ 2017-11-14 11:42  测试开发分享站  阅读(89)  评论(0编辑  收藏  举报