Hibernate 一次查询分多次返回 避免内存溢出
public void grpcGpioDevice(StreamObserver<NI_GetAllDeviceListResponse> responseObserver,
Map<String, VsGrpc> vcuMap) {
Session session = null;
final StringBuffer sb = new StringBuffer("select name,vs_id,"
+ "description,direction,device_id,vx_external_id from EMS_GPIO_DEVICE ");
try {
session = getSession();
Query query = session.createSQLQuery(sb.toString()).setFetchSize(grpcRspNumber);
ScrollableResults results = query.scroll();
List<GpioDevice> gpioList = new ArrayList<>(); while(results.next()) {
Object[] obj = results.get();
GpioDevice gd = new GpioDevice();
gd.setName(obj[0] == null ?"":obj[0].toString());
gd.setVsId(obj[1] == null ?"":obj[1].toString());
gd.setDescription(obj[2] == null ?"":obj[2].toString());
gd.setDirection(obj[3] == null ?0:Integer.parseInt(obj[3].toString()));
gd.setDeviceId(obj[4] == null ?"":obj[4].toString());
gd.setVxExternalId(obj[5] == null ?"":obj[5].toString());
gpioList.add(gd);
if(gpioList.size()==grpcRspNumber) {
NI_GetAllDeviceListResponse.Builder response = NI_GetAllDeviceListResponse.newBuilder();
grpcFlowResult.getAiAoDiDoInfo(null, gpioList, vcuMap, "DIDO", response);
grpcFlowResult.result(response, responseObserver);
gpioList.clear();
}
}
if(gpioList.size()>0 && gpioList.size()<grpcRspNumber) {
NI_GetAllDeviceListResponse.Builder response = NI_GetAllDeviceListResponse.newBuilder();
grpcFlowResult.getAiAoDiDoInfo(null, gpioList, vcuMap, "DIDO", response);
grpcFlowResult.result(response, responseObserver);
gpioList.clear();
}
}catch (RuntimeException e) {
e.printStackTrace();
} catch (Exception ex) {
ex.printStackTrace();
} finally {
releaseSession(session);
}
}
Hibernate 一次查询分多次返回 避免内存溢出的更多相关文章
- Hibernate通过SQL查询常量时只能返回第一个字符的解决方法
在Hibernate中如果通过 [java] view plaincopy session.createSQLQuery("select '合计' as name from dual&quo ...
- 百万级数据查询到datatable中,提示内存溢出
参考资料: http://group.cnblogs.com/topic/32230.html
- 解决查询access数据库含日文出现“内存溢出”问题
ACCESS有个BUG,那就是在使用 like 搜索时如果遇到日文就会出现“内存溢出”的问题,提示“80040e14/内存溢出”. 会出问题的SQL: where title like '%" ...
- hibernate框架之-查询结果集返回类型
Hibernate支持HQL和SQL的查询,返回结果支持POJO类型或字段/数组的形式. 开发中用Hibernate进行数据库查询,用的是SQL.原来需要查询一个表的几乎所有字段,所以我使用了addE ...
- 关于hibernate纯sql查询返回结果集的问题(hbm.xml中不写多表关联)
相信用过hibernate的兄弟们都会因为多表复杂查询后,为返回的结果如何组装到一个VO中而烦恼不已.我也不停的为此而烦恼,但是在看了hibernate的transform后,感觉这个方法还挺管用的. ...
- Hibernate应用SQL查询返回实体类型
Hibernate应用SQL查询返回实体类型 Hibernate使用SQL查询返回实体类型 以前,使用SQL查询,结果放在 RS 结果集中,还要去转换影射到Java类中.Hibernate中,可以自动 ...
- Hibernate Query Language查询:
Hibernate Query Language查询: Criteria查询对查询条件进行了面向对象封装,符合编程人员的思维方式,不过HQL(Hibernate Query Language)查询提供 ...
- Hibernate原生SQL查询
最近在做一个较为复杂的查询,hibernate基本的查询不能满足,只好使用其提供的原生sql查询.参考网上的一些资料,做一些总结. 对原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行 ...
- hibernate的hql查询
1.概念介绍 1.Query是Hibernate的查询接口,用于从数据存储源查询对象及控制执行查询的过程,Query包装了一个HQL查询语句. 2.HQL是Hibernate Query Langua ...
随机推荐
- JMS、AMQP和MQTT主要特性
今天无意中看到mq的原理,才发现activeMq与ribbMq的原理是不一样的.前者是JMS的实现,后者是AMQP的实现... 原理简介:https://www.cnblogs.com/zhangyu ...
- tmux快捷键汇总(常用)
会话外操作: tmux new -s <name-of-my-session> 在会话外创建一个新的会话 tmux ls 在会话外获取会话列表 tmux a(attach) -t < ...
- 使用minikube在本机测试kubernetes
目录 简介 安装 Docker CE 安装 kubectl 安装 minikube 启动 minikube 启动 dashboard 启动一个服务 删除服务 参考 本文主要讲解 minikube(ku ...
- springBoot启动时让方法自动执行的几种实现方式
一.开篇名义 在springBoot中我们有时候需要让项目在启动时提前加载相应的数据或者执行某个方法,那么实现提前加载的方式有哪些呢?接下来我带领大家逐个解答 1.实现ServletContextAw ...
- angularjs ui-grid cellTemplate checkbox ng-checked
{ name: '@Localizer["ActiveInd"]', field: 'ActiveInd', enableSorting: false, ...
- RabbitMQ---2、介绍
1.背景 RabbitMQ是一个由erlang开发的AMQP(Advanved Message Queue)的开源实现. 2.应用场景 2.1异步处理 场景说明:用户注册后,需要发注册邮件和注册短信, ...
- [javaSE] IO流(递归查找指定文件)
递归方法,实现查找目录中以.java为后缀的文件路径,并存入文本文件中 定义一个静态方法fileToLine(),传入参数:File对象目录,List集合对象(List<File> 这样做 ...
- 自定义经纬度索引(非RTree、Morton Code[z order curve]、Geohash的方式)
自定义经纬度索引(非RTree.Morton Code[z order curve].Geohash的方式) Custom Indexing for Latitude-Longitude Data 网 ...
- hdu 3474 Necklace 单调队列
Necklace Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Su ...
- python循环删除列表里的元素!漏删!
li = [1,2,3,4,5,6] for i in li: if i<3: li.remove(i) print(li) #输出的结果是 [2,3,4,5,6] 2没有remove掉 ...