栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

session.clear()在Hibernate中如何工作

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

session.clear()在Hibernate中如何工作

可以将会话视为自开始当前事务以来已经从数据库加载(或持久存储到)的实体的缓存。

  1. Session.clear
    并非以任何方式强制执行,但是如果您在一个事务中执行大量实体加载/保存操作,则很有用,以避免出现内存不足错误。在您的示例中,您将
    employee
    在会话中复制50个实体。如果没有
    flush
    and
    clear
    方法调用,则每50个对象中
    save()
    您将有100.000个实体在会话中复制(并且不是垃圾回收的,因为会话具有指向该实体的链接)。

  2. Session.clear
    将不会执行提交或回滚。甚至都不是
    flush
    (因此,为什么您应该在之前进行刷新
    Session.clear
    ,以便hibernate生成SQL查询来查询未决的实体更新。

  3. 回滚或提交操作不是在应用程序端执行的,而是在数据库中执行:hibernate只会要求数据库进行提交或回滚(Hibernate可能会在提交操作之前触发刷新,但刷新不属于提交的一部分)。提交操作将(也无法)访问会话。这是一种数据库内部机制,由于自事务开始以来运行了所有SQL查询,因此该数据库内部机制将保留(或还原)执行的数据修改。

完全以相同的方式,在hibernate状态下打开事务并没有执行很多操作:主要是从池中获取数据库连接,并告诉数据库 不要

auto_commit
遵循sql查询,而是等待提交或回滚命令。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/409406.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号