hibernate的Configuration问题

03-07-23 Njord

是不是每次都需要用一个Configuration实例来buildSessionFactory从而得到一个SessionFactory呢?

robbin
2003-07-23 15:06

如果不是在EJB环境下,可以自己写一个工厂方法,实现SessionFactory的Singleton。如果在EJB环境下,可以将它配置到JNDI上。总之,只需要开始的时候配置一次,以后都不需要再配置了。参考代码如下:

import net.sf.hibernate.cfg.Configuration;
import net.sf.hibernate.SessionFactory;
import net.sf.hibernate.HibernateException;
import net.sf.hibernate.MappingException;

public class HibernateSessionFactory {

  private static SessionFactory sf = null;

  public static synchronized Session getSession() throws HibernateException {
    Configuration conf = null;
    if (sf == null) {
      try {
        conf = new Configuration()
             .addClass(Teacher.class)
             .addClass(...class);   // 把数据库表映射的POJO添加到这里
      } catch (MappingException e) {
        System.out.println(e.getMessage());
        return null;
      }
      sf = conf.buildSessionFactory();
    }
    return sf.openSession();
  }

}
<p>

在自己的程序里面写:

Session s = HibernateSessionFactory.getSession();

就可以了。

Njord
2003-07-23 17:37

多谢robbin。

如果我要用在struts的action中,用工厂会不会有问题呢?

前面看你们讨论ThreadLocal的问题,一直没搞懂,不知道跟这个是不是有关系?

robbin
2003-07-23 17:40

不会有问题,你就放心用这个代码就行了。

Njord
2003-07-23 17:46

谢谢。

2Go 1 2 下一页