hibernate批量操作

hibernate批量操作

有以下四种方式来进行批量操作

  • 通过session

  • 通过HQL

  • 通过statelessSession

  • 通过JDBCAPI 使用该方式效率最高,速度最快

通过session

通过session批量操作时:session的save()及update()方法会把处理的对象存放在自己的缓存中,如果使用session来处理大量持久化对象,需要及时从缓存中清空已经处理完毕且不会再访问的对象(处理完一批对象后,立即调用flush()方法刷新缓存,然后调用clear()方法清空缓存)

注意

  • 在hibernate配置文件中设置JDBC单次批量的数目,应保证每次想数据库发送的批量SQL语句数目与batch_size属性一致

  • 如果主键由数据库自增生成的话,无法使用批量操作

通过HQL

不能进行批量插入,更新只能操作一条sql语句(比如说将某个值批量改为某个数)

通过StatelessSession

  • StatelessSession没有缓存,使用该类来加载、保存、更新后的对象处于游离状态
  • 调用save()、update()、delete()方法时会立即执行SQL语句
  • StatelessSession不会对所加载的对象自动进行脏检查。需要进行显示的save()/update()
  • StatelessSession不会对关联的对象进行任何级联操作
  • 通过同一个StatelessSession加载相同OID的对象,会得到两个具有不同内存地址的对象
  • StatelessSession可以被Interceptor拦截器拦截到,但是会被hibernate事件处理系统忽略

通过JDBCAPI

java 复制代码
session.doWork(new Work() {
  @Override
  public void execute(Connection connection) throws SQLException {

  }
});

zhhll.icu/2020/框架/hib...

本文由mdnice多平台发布

相关推荐
Java牛马2 小时前
SpringBoot Starter 依赖相关总结
java·spring·springboot·starter·自动装配·依赖
吴声子夜歌3 小时前
Java面试——Spring Cloud原理及应用(二)
java·spring cloud·面试
东小西3 小时前
【SAA实战】第 1 篇:ReactAgent 入门——先撸个"会调工具的助手"跑起来
java·人工智能·spring
mqiqe4 小时前
AgentScope Java 2.0 协议集成全景解析:A2A、AG-UI、Agent Protocol 三大开放协议实战指南
java·开发语言·ui
脉动数据行情4 小时前
Java 实现台股 TWSE/TPEx 行情采集(个股 + K 线)
java·开发语言·twse·tpex·台股
月华路6 小时前
G1 GC 对数组与大对象(Humongous)的处理
java·jvm·算法
liangshanbo12157 小时前
虚拟列表深度面试题整理
java·开发语言·前端
gugucoding7 小时前
59. 【Java】Spring Boot 入门:第一个 Web 应用
java·开发语言·spring boot
10mAh8 小时前
【Java】HashMap 的 put 到底做了什么?——冲突、扩容与树化实测
java·开发语言·hash
我命由我123458 小时前
人脸识别 - 勒克斯(光线照射到物体表面上的明亮程度)
android·java·学习·java-ee·人脸识别·学习方法·android runtime