问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

list和iterator的区别

发布网友 发布时间:2022-04-13 22:07

我来回答

2个回答

热心网友 时间:2022-04-13 23:37

list和iterator的区别是Iterator可以使用JCS,而List不能。

JCS的介绍:

CS(Java Caching System)是一个对象Cache,它可以把Java对象缓存起来,提高那些访问频率很高的Java对象的存取效率。JCS是按照对象的唯一标示来存取对象的,比如说可以按照对象的    hashCode来存取。

对于Hibernate来说,可以利用JCS来缓存查询结果,这样当下次访问同样的数据,就无须去数据库取,直接从JCS中取出来,加快了查询速度。 

当Hibernate使用List或者Iterator方式来第一次读取数据的时候,JCS是空的,此时不管是List方式还是Iterator方式都会往JCS里面填充查询出来的持久对象。

从JCS中取数据是按照对象的唯一标示来存取的,而对于PO持久对象来说,唯一标示就是主键,因此Hibernate首先必须获得主键列表,然后根据主键列表挨个判定,看这个持久对象究竟是在JCS里面还是在数据库里面,假如在JCS里面,那么按照主键取,假如在数据库,那么发送sql取。

举例:

(1)在用Query方法查询的时候,通过HQL语句来得到Query对象,并对Query对象进行操作,首先是用list方法获取到Query的List集合并输出

public void listQuery() {

       Configuration configuration = new Configuration().configure();

       SessionFactory factory = configuration.buildSessionFactory();

       Session session = factory.openSession(); 

        Query query = session.createQuery("from Customers");

       List<Customers> list = query.list();

       for(Customers entity:list){

           System.out.println(entity.toString());

       }

}

或者如下代码:

 

输出的结果为:

List的执行sql语句为:

Hibernate: select customers0_.id as id0_, customers0_.realName as realName0_, customers0_.pass as pass0_, customers0_.sex as sex0_, customers0_.petName as petName0_, customers0_.email as email0_, customers0_.rdate as rdate0_ from customers customers0_

cn.csdn.procts.domain.Customers@5bf624

(2)通过Query得到Query的对象,并用iterator迭代器输出

    public void iterateQuery(){

       Configuration configuration = new Configuration().configure();

       SessionFactory factory = configuration.buildSessionFactory();

       Session session = factory.openSession();

       Query query = session.createQuery("from Customers");

       Iterator<Customers> it = query.iterate();

       // 遍历出来所有的查询结果

       while (it.hasNext()) {

           Customers customer = it.next();

           System.out.println(customer.toString());

       }

    }

Iterator的执行结果:

Hibernate: select customers0_.id as col_0_0_ from customers customers0_

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
忧思华光玉攻略忧思华光玉攻略 ...梦幻西游手游神器任务忧思华光玉完成攻略是什么 lol手游战队名字怎么取好_英雄联盟手游战队怎么取名字好 ...是怎么回事,系统是WIN7 64位,有独立显卡带1G显存 集成显卡,4g内存条,怎么就读出来2.20g?怎么才能都读出来?另外加一根2g... 我家电脑是集成显卡,内存是4G,而显存是256MB,怎么改显存?配图 什么方法可以使人不困啊?? ...山东协和学院专科能不能被录取?希望大家帮帮忙吧,谢... ...文科生可以报考么?黑龙江的考生分数大概要多少? 中国民用航空飞行学院的民航商务一般收分是多少?理科生可以就读吗... ps3 2512a想换内置硬盘最大支持多大的硬盘 ps3400012g扩展内置硬盘用多厚的 加拿大买的ps3 (cech-3001)支持的内置硬盘最大容量是多少呢? 请问PS3内置硬盘最大支持多少容量?我想换2T的~ ps3内置硬盘的要求 PS3换内置硬盘最大支持多少容量 苏州智联科慧自动化有限公司怎么样? 昆山智联电子有限公司怎么样? 无锡凯施智联软件科技有限公司怎么样? 苏尚智联科技股份有限公司南京分公司怎么样? 生态瓶中有5条小鱼增加一倍小鱼可能观察到的现象是什么?(科学题) 小鱼儿与花无缺为什么我不能发图片 有个游戏叫:好像叫海底总动员.就是一直小鱼.一直吃鱼,然后变大.求个地址 江苏大信智联信息科技有限公司怎么样? 戴假发化纤丝的好吗 纤维是不是就是从棉(棉花)、毛(动物毛、人造毛)、丝(蚕丝,化纤丝)中提炼出来的一丝一丝的线? 20岁的照片和23岁的照片 歼20战斗机高清图片 化纤涤纶丝HIM SD NIM TBR是什么意思 化纤丝怎么才能不变形? 夫妻离婚后怎么把房子归到孩子名下 夫妻离婚房子能不能转到孩子名下? 夫妻离婚房子可以过户给小孩吗 离婚后把房产过户到孩子名下 夫妻离婚房子过户给孩子,处置时由谁做主 夫妻离婚可以把房子过户到孩子的名下吗 有什么风险 一张身份证,能认证几个?可以绑定几个呀? 一个人可以实名两个吗? 一个身份证 可以实名两个吗? 微信里面一个身份证可以绑定两个吗?就是认证的。 一个身份证可以绑定几个? 一个身份证可以绑定几个? 一个身份证号码可以注册几个 查询身份证绑定多少个 微信支付一个身份证可以绑定几个? 一个身份证实名认证几个 美味鱼头泡饼锅的做法,美味鱼头泡饼锅怎么做 杂鱼泡饼的做法步骤图,杂鱼泡饼怎么做好吃 暖暖的味道鱼肉泡饼如何做 NW是哪个国家的简称