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

ziseshatan 2007-04-26 10:01:29
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 是什么意思 有什么用 所谓的静态代码 在什么情况下执行啊
...全文
240 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ziseshatan 2007-05-06
  • 打赏
  • 举报
回复
而且 有什么理由说静态代码的效率就要比构造函数要高
谁说的
ziseshatan 2007-05-06
  • 打赏
  • 举报
回复
import java.util.List;
import java.util.ArrayList;

/**
* Created by IntelliJ IDEA.
* User: huaxiaoxi
* Date: 2007-5-6
* Time: 13:32:11
* To change this template use File | Settings | File Templates.
*/
public class MainDo {
static{
System.out.println("某一个类里面的静态方法");
} //到底应该如何加载这段代码呢?
public MainDo(){
System.out.println("构造函数");
}
public static void main(String [] args){

mainDo=new MainDo();
}
} 那按理应该现打印出 某一类的静态方法 在打印出 构造函数啊
可事实上 前者根本没有打印 有大牛吗 出来解释一下
zisidemao 2007-04-26
  • 打赏
  • 举报
回复
程序运行时把sessionfactory仍到内存里以后用都用这一个,对于开发一般sessionfactory都保持一个,除非你是选用多个数据库
kekemao1 2007-04-26
  • 打赏
  • 举报
回复
static {}
你可以把他看成声明一个静态变量,他要在构造函数之前调用的,他这样的代码的优势就是提高了代码的效率,仅仅在第一次实例或用这个类的时候才执行其中的内容。

而sessionFactory=new Configuration().configure().buildSessionFactory();的意思是从HIBERNATE配制文件中进行对HIEBRNATE的配制,通俗点就是从你的hibernate.cfg.xml里拿数据了。

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧