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()有什么分别?

上一篇:4 程序流程结构


下一篇:mysql设计与优化(一)