关于hibernate在第一次查询数据库的时候,是否开启缓存,及开启缓存的时机,使用的缓存是以及还是二级,请详情说明下,万分感谢!!!
1条回答 默认 最新
关注 不知道你这个问题是否已经解决, 如果还没有解决的话:- 你可以参考下这篇文章:Hibernate框架之项目启动常见问题以及解决方法
- 除此之外, 这篇博客: hibernate5关联查询和条件查询以及统计查询中的 一级缓存的特性:缓存中的持久化对象会自动更新数据库 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
@Test public void AutoUpdate(){ /** * 第一次查出来,会将其同时放入两个地方,一级缓存和快照区(一级缓存的副本) */ UserEntity userEntity1=session.get(UserEntity.class,1); System.out.println(userEntity1); /** * 更新持久化对象的值,同时也会更新一级缓存里面的值,但不会更新快照区里的值 */ userEntity1.setUsername("我是更名后的火星人"); /** * 事务:操作中的基本单元,都成功,都失败(的操作)----原子性,一致性,隔离性,持久性 * 无隔离性的问题:脏读,虚读,不可重复读 * * 设置事务隔离级别 * mysql默认级别是repeatable read可重复读---在Repeatable Read隔离级别下,一个事务可能会遇到幻读(Phantom Read)的问题,幻读就是读出了不存在的数据 * * 事务一提交,一级缓存就会发出updaate语句自动去更新数据库的值 * 查询操作不存在事务,所以查询不需要transaction.commit(); * update,insert,delete需要事务的支持,所以执行更新,插入,删除操作后需要提交事务,上述操作才会生效 * 事务提交,会进行一级缓存和快照区的值对比,如果相同,则不会发update语句,不同才会发update自动更新数据库的值 */ transaction.commit(); System.out.println(userEntity1); session.close(); }
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^解决 无用评论 打赏 举报
悬赏问题
- ¥100 Jenkins自动化部署—悬赏100元
- ¥15 关于#python#的问题:求帮写python代码
- ¥20 MATLAB画图图形出现上下震荡的线条
- ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
- ¥15 perl MISA分析p3_in脚本出错
- ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
- ¥15 ubuntu虚拟机打包apk错误
- ¥199 rust编程架构设计的方案 有偿
- ¥15 回答4f系统的像差计算
- ¥15 java如何提取出pdf里的文字?