刚学的Hibernate求解session的关闭问题

[code="java"]package com.pb.hibernate.util;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {
private static Session session;

private HibernateUtil(){}

static{
    buildSession();
}

private static void buildSession(){
    Configuration config=new Configuration().configure();
    SessionFactory sf=config.buildSessionFactory();
    session=sf.openSession();
}

public static Session getSession(){
    if (session==null) {
        buildSession();
    }
    return session;
}

public static void closeSession(){
    if (session!=null) {
        session.close();
    }
}

}[/code] 这是我们老师写的代码,一个Hibernate的工具类,23行好像有问题,session关闭后不为空,就不会执行buildSession()这个方法,然后就一直报session is closed,求修正

建议使用ThreadLocal 来编写hibernate的Session初始化 这也是hibernate官方建议的
[code="java"]
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateFactory {
private static Configuration cfg;
private static SessionFactory sf;
private static ThreadLocal th = new ThreadLocal();

static {
    cfg = new Configuration();
    cfg.configure();
    sf = cfg.buildSessionFactory();
}

public static Session getSession() {
    Session session = th.get();
    if (session == null) {
        session = sf.openSession();
        th.set(session);
    }
    return session;
}

public static void closeSession() {
    Session session = th.get();
    if (session != null) {
        session.close();
        th.set(null);
    }
}

}
[/code]

试试这样修改:
[code="java"]
public static Session getSession(){

if (session==null || !session.isOpen()) {

buildSession();

}

return session;

}
[/code]

提示你看一下session关闭后是什么?

[quote]

试试这样修改:

[code="java"]
public static Session getSession(){

if (session==null || !session.isOpen()) {

buildSession();

}

return session;

}
[/code]
14 分钟前
[/quote]

在补充一点

[code="java"]

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

[/code]

这哪个学校的老师写的工具类............

兄弟 楼上的答案很正确,这里就不做解释了
就只想问一句 你是哪个学校的?简直误人子弟