Hibernate中两种获取Session的方式

2014-11-24 09:07:22 · 作者: · 浏览: 0

Session:是应用程序与数据库之间的一个会话,是Hibernate运作的中心,持久层操作的基础.对象的生命周期/事务的管理/数据库的存取都与Session息息相关.


Session对象是通过SessionFactory构建的,下面举个例子来介绍Hibernate两种获取session的方式。


日志,是编程中很常见的一个关注点.用户在对数据库进行操作的过程需要将这一系列操作记录,以便跟踪数据库的动态.那么一个用户在向数据库插入一条记录的时候,就要向日志文件中记录一条记录,用户的一系列操作都要在一个Session中进行,否则这就成为了两个线程.不能保证同步.看下面的代码


HibernateUtil管理Session的工具类


package com.bjpowernode.usermgr.util;


import org.hibernate.Session;//hibernate3的
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;


public class HibernateUtils {
private static SessionFactory factory;

static{
try{
//读取hibernate.cfg.xml文件
Configuration cfg=new Configuration().configure();

//建立SessionFactory
factory=cfg.buildSessionFactory();

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

//获得开启着的Session
public static Session getSession(){
return factory.openSession();
}

//关闭Session
public static void closeSession(Session session){
if(session!=null){
if(session.isOpen()){
session.close();
}
}
}

public static SessionFactory getSessionFactory(){
return factory;
}
}