hibernate批量删除与更新
来源:互联网 发布:淘宝店铺刷单 编辑:程序博客网 时间:2024/05/21 06:13
1.循环执行hql语句:
public RemoveFavoritesResponse remove(RemoveFavoritesRequest request){ Date date = new Date(); long startTime = date.getTime(); String[] codes = request.getValue().split(","); for(int i=0; i<codes.length; ++i) { Map<String, Object> params = new HashMap<String, Object>(); String hql = "delete from Favorites where userid=:userid and value=:value"; params.put("userid", request.getUserid()); params.put("value", codes[i]); if(StringUtils.hasText(request.getAppVersion())) { hql += " and appVersion=:appVersion"; params.put("appVersion", request.getAppVersion()); } Query q = em.createQuery(hql); for(Map.Entry<String, Object> entry: params.entrySet()) { q.setParameter(entry.getKey(), entry.getValue()); } q.executeUpdate(); } long endTime = new Date().getTime(); System.out.println("remove:\n" + (endTime-startTime)); return new RemoveFavoritesResponse(0, ""); }
2.利用hibernate的批量更新API:
public RemoveFavoritesResponse remove1(RemoveFavoritesRequest request){ Date date = new Date(); long startTime = date.getTime(); String[] codes = request.getValue().split(","); List<String> codeList = Arrays.asList(codes); Map<String, Object> params = new HashMap<String, Object>(); String hql = "delete from Favorites where userid=:userid and value in :codeList"; params.put("userid", request.getUserid()); params.put("codeList", codeList); if(StringUtils.hasText(request.getAppVersion())){ hql += " and appVersion=:appVersion"; params.put("appVersion", request.getAppVersion()); } Query q = em.createQuery(hql); for(Map.Entry<String, Object> entry : params.entrySet()){ q.setParameter(entry.getKey(), entry.getValue()); } q.executeUpdate(); long endTime = new Date().getTime(); System.out.println("remove1:\n" + (endTime-startTime)); return new RemoveFavoritesResponse(0, ""); }
当codeList中的元素较少时,两者所耗费时间基本没有差别 但当codeList中的元素较多时,第二个的效率则较高 例如当codeList中有3个元素时, 平均耗费时间: 第一个:94 第二个:110 当codeList中有16个元素时: 平均耗费时间: 第一个:109 第二个:1103.实际上当需要进行批量更新与删除时,利用JDBC的批量更新与删除,性能会最好. 参考:http://blog.sina.com.cn/s/blog_4550f3ca0101jhr9.html http://blog.csdn.net/lzwglory/article/details/17258201
0 0
- Hibernate 批量更新与删除
- hibernate批量删除与更新
- Hibernate批量更新与批量删除
- hibernate批量更新与批量删除
- Hibernate批量更新与删除实例浅析
- Hibernate 批量插入、更新与删除
- Hibernate 批量插入、更新与删除
- Hibernate 批量插入、更新与删除
- Hibernate批量更新与删除实例浅析
- Hibernate 批量插入、更新与删除
- hibernate 批量删除 更新小节
- Hibernate批处理操作优化 (批量插入、更新与删除)
- Hibernate批处理操作优化 (批量插入、更新与删除)
- Hibernate批处理操作优化 (批量插入、更新与删除)
- Hibernate批处理操作优化 (批量插入、更新与删除)
- Hibernate批处理操作优化 (批量插入、更新与删除)
- Hibernate批处理操作优化 (批量插入、更新与删除)
- Hibernate批处理操作优化 (批量插入、更新与删除)
- android打包报错"about_check_update" is not translated in en
- leetcode_c++:栈:Binary Tree Zigzag Level Order Traversal(103)
- 多校联赛第二场
- android 黑名单 短信拦截
- Ubuntu 查看CPU/GPU内存使用情况
- hibernate批量删除与更新
- 设计模式_观察者模式
- Scala学习日志(二)——深入模式匹配(一)
- 日历控件的封装
- html5-contentEditable在线编辑
- HTTP Header 详解
- 数组作为形参
- html中文字或图片的简单动态展示
- 故障案例--mysql5.5分区表的一个坑