zoukankan      html  css  js  c++  java
  • hibernate下Session的获取方式

    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环境时,调用即可。


  • 相关阅读:
    01时间处理--02 指定日期--转成星期
    中文乱码处理
    判断js变量是否定义,
    安卓请求服务器js文件下载到本地,版本号不一致就下载
    a标签href跳转---传值---禁止单引号
    修改mysql配置文件,group_concat设置为最大.默认1024个字节字符串.多条json会超出
    GROUP_CONCAT()多条数据.拼接字符串 最大长度1024
    使用变量判断之前.务必先定义
    多种序列化器-指定类对象
    JsonHelper
  • 原文地址:https://www.cnblogs.com/qcxdoit/p/5796370.html
Copyright © 2011-2022 走看看