首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

学习hibernate 哪位高手能给小弟我解释一段下面的代码 很基础

2012-01-15 
学习hibernate 谁能给我解释一段下面的代码很基础publicclassHibernateUtil{privatestaticLoglogLogFacto

学习hibernate 谁能给我解释一段下面的代码 很基础
public   class   HibernateUtil   {

private   static   Log   log=LogFactory.getLog(HibernateUtil.class);

private   static   final   SessionFactory   sessionFactory;

static   {
    try{
    sessionFactory=new   Configuration().configure().buildSessionFactory();
    }   catch   (Throwable   ex)   {
        log.error( "Initial   SessionFactory   creation   failed. ",ex);
        throw   new   ExceptionInInitializerError(ex);
    }
}

public   static   final   ThreadLocal   session=new   ThreadLocal();

public   static   Session   currentSession()   throws   HibernateException   {
    Session   s=(Session)session.get();
    //Open   a   new   Session,   if   this   Thread   has   none   yet
    if   (s==null)   {
        s=sessionFactory.openSession();
        session.set(s);
    }
    return   s;
}

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

}
尤其是下面这段------------------------------------------------
static   {
    try{
    sessionFactory=new   Configuration().configure().buildSessionFactory();
    }   catch   (Throwable   ex)   {
        log.error( "Initial   SessionFactory   creation   failed. ",ex);
        throw   new   ExceptionInInitializerError(ex);
    }
}
加上了个static   是什么意思     有什么用   所谓的静态代码   在什么情况下执行啊

[解决办法]
static {}
你可以把他看成声明一个静态变量,他要在构造函数之前调用的,他这样的代码的优势就是提高了代码的效率,仅仅在第一次实例或用这个类的时候才执行其中的内容。

而sessionFactory=new Configuration().configure().buildSessionFactory();的意思是从HIBERNATE配制文件中进行对HIEBRNATE的配制,通俗点就是从你的hibernate.cfg.xml里拿数据了。
[解决办法]
程序运行时把sessionfactory仍到内存里以后用都用这一个,对于开发一般sessionfactory都保持一个,除非你是选用多个数据库

热点排行