此session非彼session之session理解
问题描述,在J2EE项目开发中我们常常用到session对象,一个是struts2中的session,一个是hibernate中session,那么这些session有什么区别呢?
技术核心:session是一种高效的、实用的缓存机制,它是用作不同机制之间会话时产生的数据的一种缓存策略,比如struts2中的session(这个session其实就是servlet中的session,没什么大的区别,只不过struts2线程安全(一个线程一个Action),servlet线程不安全罢了(通用一个servlet)),这个session是浏览器和J2EE应用程序交互时产生的一种会话缓存机制(本质上是客户端和服务器交互会话机制),这个session中存放少量用户信息用于后期使用。而hibernate中的session是应用程序和数据库交互时产生的一种查询缓存策略机制(所谓的一级缓存,当然也有二级缓存),这个session是存储的一些查询信息(比如你查了某个对象后不久,你又查询它,那么hibernate就直接从session中取出来,而不是从数据库中去查询了)。
总结:Hibernate中Session 是Hibernate中的缓存对象 用此session操作数据库后会缓存返回的结果在session里面(一级缓存) 当你再次操作数据库的时候 如果session缓存里面有相应的值 则不用去与数据库交互直接返回结果,servlet
中的Session 也是缓存 其缓存用户客户端与服务器对话时候的一些信息总之可以看出来所有的session基本都是起缓存作用的 就是把一些信息缓存在内存中 方便存取值但是不同的session是不能相互直接赋值的 因为是两个不同的概念 只是名字一样
名字一样也是为了帮助程序员理解 学了servlet的session 后再遇到session也就应该是缓存作用的。
最后:这个问题很高深,一般初学者都会混淆。。。。。