Session的获得方式

在hibernate.cfg.xml中添加这个属性,来开启currentSession的使用<property name= "hibernate.current_session_context_class">thread</property>


    SessionFactory sessionFactory = configuration.buildSessionFactory();

而buildSessionFactory(){
//每次都会重新而new一个sessionFactoryImpl,工厂模式!所以是线程安全
        return new SessionFactoryImpl(
                this,
                mapping,
                settings,
                getInitializedEventListeners(),
                sessionFactoryObserver
            );
}

sessionFactory.getCurrentSession(){  通过ThreadLocal<Map<SessionFactory,session>> 绑定,让获得session的线程唯一!    1.要使用currentSession,要在cfg。xml重配置     2.必须开启事务    3.sessio.commit之后自动关闭session,不用手动session.close()}

				
时间: 2024-12-27 09:40:51

Session的获得方式的相关文章

session的存储方式和配置

Session又称为会话状态,是Web系统中最常用的状态,用于维护和当前浏览器实例相关的一些信息.我们控制用户去权限中经常用到Session来存储用户状态,这篇文章会讲下Session的存储方式.在web.config中如何配置Session.Session的生命周期等内容. 1.Session的存储方式. session其实分为客户端Session和服务器端Session. 当用户首次与Web服务器建立连接的时候,服务器会给用户分发一个 SessionID作为标识.SessionID是一个由2

1、Struts2和Hibernate的简单整合(带Session的管理方式)

1.关于数据库:是部门和员工的关系 关于entity和xx.hbm.xml的实现 Dept.class package cn.itcast.entity; import java.util.HashSet; import java.util.Set; public class Dept { private int deptId; private String deptName; // [一对多] 部门对应的多个员工 private Set<Employee> emps = new HashSe

(21)项目中Hibernate Session的管理方式

1.openSession和getCurrentSession的区别 package com.rk.hibernate.cache; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import org.junit.Test; public class App_SessionInProject { private static Se

Hibernate入门(四)之hibernate中session的创建方式

为什么要专注于session的创建方式 在有些场景必须关注session的创建,比如说在银行转账操作的时候,两个账户转账必须在同一个session中 如上面所示,账户1钱没了,账户2钱却没有到,原因就在于两者不再同一个事务当中,不能实现事务的回滚. getCurrentSession 说明: 1.产生方式的说明 1.先检查当前线程中是否有session 2.如果当前线程中有session,则把session提取出来,直接使用 3.如果当前线程中没有session,则采用openSession方法

session的实现方式

分布式Session的几种实现方式 1.基于数据库的Session共享 2.基于NFS共享文件系统 3.基于memcached 的session,如何保证 memcached 本身的高可用性? 4. 基于resin/tomcat web容器本身的session复制机制 5. 基于TT/Redis 或 jbosscache 进行 session 共享. 6. 基于cookie 进行session共享

Hibernate学习笔记(四) — session的产生方式 与 一对多关系映射

一.session的创建 Session是由SessionFactory负责创建的,而SessionFactory的实现是线程安全的,多个并发的线程可以同时访问一个SessionFactory并从中获取Session实例,但Session不是线程安全的. 每次openSession,产生的都是一个新的session,相当于创建一个新的连接.但是有很多时候,并不希望这样.比如在淘宝购物,在付账的一瞬间,至少有三件事情发生,转账,仓库数据变化,购物历史记录.而这三件事有必须在同一事务下.自然我们会联

ASP.NET MVC中的Session以及处理方式

最近在ASP.NET MVC项目中碰到这样的情况:在一个controller中设置了Session,但在另一个controller的构造函数中无法获取该 Session,会报"System.NullReferenceException"错误.之所以这样做是因为希望在controller构造函数中获 取Session值并赋值给一个全局变量,好让该controller的多个action共享. 起先以为是ASP.NET State Service服务没有开启,或者是Web.config中se

web集群中经常使用的session同步解决方式及对照

随着站点的功能越来越多,用户量越来越庞大,单节点模式已经严重不能支撑整个系统的正常运作,轻则用户页面訪问时间越来越慢.重则就会导致整个系统瘫痪.这时候 就须要优化或调整眼下的架构,大部分人就会採用各种负载均衡软件比如nginx.hproxy.LVS等,也有的採用分布式的方式把系统依据功能拆分成非常多系统,也有的依据地域 和网络不同来实现訪问不同节点部署的系统.也有的大型高流量.高负载的系统把负载均衡.分布式及依据地域.网络等这些方式都整合在一起来实现系统的正常执行. 採用负载均衡软件是眼下大家採

jsp:session的跟踪方式

一,HTTP 是一种"无状态"协议,这意味着每次客户端检索网页时,客户端打开一个单独的连接到 Web 服务器,服务器会自动不保留之前客户端请求的任何记录.所以需要跟踪用户的sessionID来判断是否是同一个用户访问. 1,使用cookie保存sessionID,cookie是将服务器需要保存的信息写入到本地的文件夹里保存.可以将session保存到cookie中,对于客户端的后续请求可以使用接收到的 cookie 来识别. 浏览器不支持 cookie,所以建议不要使用这种方式来维持