Hibernate的session.load()和session.get()有什么分别?
Get会发送查询语句提取数据,而load方法当对象使用时才去数据库查询。
如果未能发现符合条件的记录,get方法返回null,而load方法会抛出一个ObjectNotFoundException。
Load方法可返回实体的代理类实例,而get方法永远直接返回实体类。
load方法可以充分利用内部缓存和二级缓存中的现有数据,而get方法则仅仅在内部缓存中进行数据查找,如没有发现对应数据,将越过二级缓存,直接调用SQL完成数据读取。
★服务器如何判断HttpSession的唯一性?
1.服务器创建HttpSession对象的时候,会为该对象生成一个唯一的ID值,用于区分不同用户的HttpSession对象.
2.服务器响应客户端的时候,会将这个HttpSession的唯一的ID值,通过Cookie写回客户端.
3.客户端再次请求这个域的时候,会将这个HttpSession的唯一的ID值发回给服务器.
4.服务器拿到这个HttpSession的唯一的ID值,通过ID值找到对应的HttpSession对象.
★HttpSession什么情况下会被销毁?
1. session.invalidate();
代码执行: sessionMap.remove(session.getID());
session.invalidate();只是将当前的Session对象从服务器的存储HttpSession对象的Map集合中删除引用,而当前的HttpSession对象还是存在,等待垃圾回收.
2. session.getMaxInactiveInterval(),HttpSession对象的最大存活时间默认1800秒,即30分钟.
当服务器检测到HttpSession已经超过最大存活时间,会将这个HttpSession对象销毁.
在web.xml中配置:
<session-config>
<session-timeout>1</session-timeout> // 分钟
</session-config>
Hibernate的session.load()和session.get()有什么分别?的更多相关文章
- session.load()和session.get()的区别
Session.load/get方 法均可以根据指定的实体类和id从数据库读取记录,并返回与之对应的实体对象. 其区别在于: 如果未能发现 符合条件的记录,get方法返回null, 而load方 法会 ...
- Hibernate中session.get()和session.load()的区别
-- 翻译自https://www.mkyong.com/hibernate/different-between-session-get-and-session-load/ 很多时候你会发现,使用Hi ...
- Hibernate学习(5)- session的get与load方法对比
1.共同点:get和load都是根据Id单条查询获取对象 org.hibernate.Session.load(Class<User> theClass, Serializable id) ...
- 第二节 hibernate session介绍以及session常用方法介绍
原创地址:http://www.cnblogs.com/binyulan/p/5628579.html Session是java应用程序和hibernate框架之间的一个主要接口.它是从持久化服务中剥 ...
- [原创]java WEB学习笔记78:Hibernate学习之路---session概述,session缓存(hibernate 一级缓存),数据库的隔离级别,在 MySql 中设置隔离级别,在 Hibernate 中设置隔离级别
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- hibernate的事务管理和session对象的详解
//开启事务 transaction=session.beginTransaction(); 上面为开启事务 transaction.commit();这个为提交事务 从session对象中获取事务后 ...
- SSH中将hibernate托管给spring获取session的方法
import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.SessionF ...
- Hibernate的懒加载session丢失解决方法
在web.xml加入spring提供的过滤器,延长session的生命周期 <!--Hibernate的懒加载session丢失解决方法 --> <filter> <fi ...
- Hibernate二次学习二----------session.flush、session.doWork
目录 1. session 2. session.flush 3. session.doWork 4. 完整代码 5. 总结 © 版权声明:本文为博主原创文章,转载请注明出处 1. session H ...
随机推荐
- nacos配置中心文件(bootstrap.properties)不生效问题解决
springcloud整合nacos作为配置中心时,配置文件不生效的问题 在这个问题处卡了一天多,在网上各种搜索.大多数解决方案都是在bootstrap.properties文件中配置nacos地址. ...
- 巧用阿里云同步k8s.gcr镜像
问题 谷歌云镜像仓库:k8s.gcr.io 镜像拉取不下来 阿里云操作配置 注册阿里云账号:点击注册 右上角点击"控制台" 点击左上角 选择"容器镜像服务" 第 ...
- Wireshark教程之界面介绍
实验目的 1.工具介绍 2.主要应用 实验原理 1.网络管理员用来解决网络问题 2.网络安全工程师用来检测安全隐患 3.开发人员用来测试执行情况 4.学习网络协议 实验内容 1.菜单栏选项介绍 2.快 ...
- 快速安装与配置kubernetes集群搭
Kubernetes是什么? 首先,它是一个全新的基于容器技术的分布式架构领先方案.这个方案尽然很新,但它是谷歌十几年以来大规模应用容器技术的经验积累和升华的一个重要成果.确切地说,kubernete ...
- 【c#新手学习 练习 案例】 阶段项目一:开发团队调度软件
案例是模仿java https://blog.csdn.net/bjfu170203101/article/details/109322590 改用C#:开发环境 vs2022/vscode .n ...
- 【C#基础概念】常量
常量的定义 常量是在编译时设置其值并且永远不能更改其值的字段. 使用常量可以为特殊值提供有意义的名称,而不是数字文本 常量是不可变的值,在编译时是已知的,在程序的生命周期内不会改变. 常量使用 con ...
- Git如何使用,操作流程
官方示例 git config --global user.name "sanqianll" git config --global user.email "224001 ...
- Qt:QVariant
0.说明 QVariant可以表现出Qt数据类型中最普遍的行为. 一个QVariant对象中一次只保留一个type()的单个值(有的type()可以是多值的,例如StringList),可以用conv ...
- WPS:在Word中插入Visio绘制的流程图
在Word菜单栏 插入->对象 如果Visio绘图已经保存为了文件,可以选择由文件创建
- Linux CentOS7.X-安装mysql5.7数据库(安装包tar.gz)
一.下载对应版本的mysql 1.官网下载压缩安装包. 进入到mysql官网下载自己对应版本的mysql,下载地址:https://dev.mysql.com/downloads/mysql/5.7. ...