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多平台发布

相关推荐
长不大的杨瑞杰29 分钟前
OpenCode v2 LSP 实战:内置语言服务器、自定义配置与诊断闭环
java·人工智能·typescript·lsp·opencode
云和数据.ChenGuang33 分钟前
python和java的try
java·开发语言·python
日日大王学编程35 分钟前
阿里巴巴开源 Data Agent(Text2SQL)项目全维度详解
java·ai·开源
Wang's Blog38 分钟前
Java 项目实战:交友项目 - 交友左滑右滑
java·交友
测试盐41 分钟前
spark作业日志定位过程
java·hadoop·spark
ly768944 分钟前
从 OpenAPI 到多语言 SDK 生成:Java 服务端契约漂移与生成器版本治理
java·开发语言·openapi·java 21·版本兼容·契约漂移·sdk 生成
lqbzlll1 小时前
CVE-2026-91403 排查指南:Java JSSE 信任链漏洞的根因、影响范围和修复步骤
java·开发语言·信任链
CarIise1 小时前
AOP 概念的引入
java·开发语言
重生之我是Java开发战士1 小时前
【Redis】Java & JavaSpring 客户端
java·redis·bootstrap
郭小李2 小时前
mybatis的 Mapper.xml语法
xml·java·mybatis