Session是应用程序与数据库之间的一个会话,其重要性不言而喻。初学Hibernate,使用SessionFactory,老老实实地打开事务,提交,回滚,关闭session。

1、直接通过SessionFactory构建Session对象(用openSession()或者getCurrentSession()),例子如下:

try {
SessionFactory sf =
new Configuration().configure().buildSessionFactory();
Session session = sf.openSession();

//也可用 sf.getCurrentSession();区别在于前者每次都创建一个新的Session,而后者在当前无Session时才创建,否则会绑定到当前已有线程;前者必须手动关闭,后者在事务结束后自动关闭。

Transaction tx = session.beginTransaction();

。。。。

。。。。

。。。。

若干操作

tx.commit();
session.close();

} catch (HibernateException e) {
e.printStackTrace();
}
}
}

后来,由于这样做太过繁琐每一步都得自行建立,因此引入spring管理Session。sessionfactory的创建等都交给spring管理.用户可以不再考虑session的管理,事务的开启关闭.只需配置事务即可.

2、利用HibernateTemplate

在applicationContext.xml中配置好相关事务,就可以很方便地获取Session了。

@Autowired

HibernateTemplate hibernateTemplate;

Session session=hibernateTemplate.getSessionFactory().openSession();

3、利用HibernateCallback()接口中的doInHibernate方法

this.getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException{
do something;
}
});

在Spring+Hibernate环境中,推荐用这种方式来获取session。这种方法的优势在于你不需要对session进行维护,会由Spring管理。你只需在需要session环境时,调用即可。

hibernate下Session的获取方式的更多相关文章

  1. hibernate中session的获取使用以及其他注意事项

    hibernate中session的获取使用以及其他注意事项 前言:工作时,在同时使用Hibernate的getSession().getHibernateTemplate()获取Session后进行 ...

  2. hibernate中session的管理方式

    package loaderman.c_session; import loaderman.b_second_cache.Dept; import loaderman.b_second_cache.E ...

  3. session的存储方式和配置

    Session又称为会话状态,是Web系统中最常用的状态,用于维护和当前浏览器实例相关的一些信息.我们控制用户去权限中经常用到Session来存储用户状态,这篇文章会讲下Session的存储方式.在w ...

  4. 登入时session的处理方式

    暂时理解不够彻底  有空在详细介绍,先记录代码 1:创建一个工具类  存取当前登录用户 package com.liveyc.eloan.util; import javax.servlet.http ...

  5. Hibernate Open Session In View模式【转】

    来源:http://www.yybean.com/opensessioninviewfilter-role-and-configuration 一.作用 Spring为我们解决Hibernate的Se ...

  6. Hibernate中Session的get和load

    hibernate中Session接口提供的get()和load()方法都是用来获取一个实体对象,在使用方式和查询性能上有一些区别.测试版本:hibernate 4.2.0. get Session接 ...

  7. 二。Hibernate 查询 HQL、SQL方式

    hibernate的查询1.HQL方式:所有查询都是根据java对象名来完成,对象名替换表名2.SQL方式:保留原来的sql查询风格3.可以通过设置第一条和最大条数来实现各种数据库的分页查询4.通过B ...

  8. Hibernate(5)session的方法

    1. Session缓存 Session缓存(Hibernate一级缓存),在 Session 接口的实现中包含一系列的 Java 集合, 这些 Java 集合构成了 Session 缓存.只要 Se ...

  9. Hibernate检索策略与检索方式

    hibernate的Session在加载Java对象时,一般都会把鱼这个对象相关联的其他Java对象也都加载到缓存中,以方便程序的调用.但很多情况下,我们不需要加载太多无用的对象到缓存中,一来会占用大 ...

随机推荐

  1. uC/OS-II 函数之信号量相关函数

    上文主要介绍了时间相关的函数,本文介绍信号量相关的函数:OSSemCreate()建立信号量函数,OSSemPend()取得使用权函数,OSSemPost()使用权递加函数 信号量介绍 如果我们想对一 ...

  2. P4850 [IOI2009]葡萄干raisins 记忆化搜索

    $ \color{#0066ff}{ 题目描述 }$ 普罗夫迪夫的著名巧克力大师Bonny需要切开一板带有葡萄干的巧克力.巧克力是一个包含许多相同的方形小块的矩形.小块沿着巧克力的边排列成n行m列,即 ...

  3. webpack中设置jquery为全局对象

    通过npm安装jquery npm install jquery -D 然后配置webpack-config.js plugins: [ new webpack.ProvidePlugin({ $: ...

  4. 题目1016:火星A+B(字符串拆分)

    问题来源 http://ac.jobdu.com/problem.php?pid=1016 问题描述 每次输入两个数,不同数位之间用逗号隔开,其中,第n位的进制就是第n个素数,即个位数是2进制的,十位 ...

  5. [CoffeeScript]使用Yield功能

    CoffeeScript 1.9 开始提供了类似ES6的yield关键字. 自己结合co和bluebird做了个试验. co -- http://npmjs.org/package/co  -- fo ...

  6. JavaWeb学习笔记(二十二)—— 过滤器filter

    一.什么是过滤器 过滤器filter是JavaWeb三大组件之一,它与Servlet很相似!不过过滤器是用来拦截请求的,而不是处理请求的.WEB开发人员通过Filter技术,对web服务器管理的所有w ...

  7. Linux下安装渗透测试框架Metasploit

    我们先来说一种方法,直接从github来下载: git clone --depth=1 git://github.com/rapid7/metasploit-framework metasploit ...

  8. [转] vagrant学习笔记 - provision

    [From]  https://blog.csdn.net/54powerman/article/details/50684844 从字面上来看,provision是准备,实现的功能是在原生镜像的基础 ...

  9. Python爬虫常用之登录(三) 使用http请求登录

    前面说了使用浏览器登录较为简单,不需要过多分析,而使用请求登录恰恰就是以分析为主. 开发一个请求登录程序的流程: 分析请求->模拟请求->测试登录->调整参数->测试登录-&g ...

  10. 批量生成python自动化测试脚本

    先前有家供应商与我们合作开发自动化工程,采用的py unittest作为脚本运行框架.我发现他们出的脚本都是挨个手写的,格式上也是参差不齐.所以有了根据用例表批量生成脚本的一段小代码 对一个测试脚本必 ...