2007-12-12
关于hibernate session管理的一些问题
hibernate中,sessionFactory是线程安全的,可以被所有的应用程序共享,而session不是线程安全的,被多个线程共享时会出现不可预知的后果,那么对session 采用ThreadLocal实现共享会出问题吗?
这个是《深入浅出hibernate》中关于session管理的实现, 有些不明白。如果各位有比较好的对session管理的方法,大家都来说说。
public class HibernateUtil {
private static SessionFactory sessionFactory;
static{
try{
sessionFactory = new Configuration().configure().buildSessionFactory();
}catch(HibernateException e){
throw new RunTimeException("Configuration problem:"+e.getMessage());
}
}
public static final TreadLocal session = new ThreadLocal();
public static Session currentSession() thrwos HibernateException{
Session s = (Session) session.get();
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(null != s){
s.close();
}
}
}
这个是《深入浅出hibernate》中关于session管理的实现, 有些不明白。如果各位有比较好的对session管理的方法,大家都来说说。
- 16:54
- 浏览 (197)
- 论坛浏览 (525)
- 评论 (4)
- 相关推荐
评论
myworkfirst
2007-12-12
回复
建议你采有事务机制
NicholasBugs
2007-12-12
回复
明白了一些,Tomcat会维护一个Servlet实例,而
Servle的执行是多线程的,会被多个并发请求调用,
为每个线程维护一个ThreadLocal型的session,
保证了session的在线程安全前提下的共享。
Servle的执行是多线程的,会被多个并发请求调用,
为每个线程维护一个ThreadLocal型的session,
保证了session的在线程安全前提下的共享。
最新评论
-
sourceforge上不去了,什 ...
f u c k G FW
-- by openeyes -
Compass的SearchableRefe ...
晕,搜问题搜到自己这里了。。。
-- by NicholasBugs -
DispatchAction 和DynaVa ...
可以用MappingDispatchAction.
-- by dmewy -
spring struts velocity ...
找到一个方案:参照http://www.ibm.com/developerwor ...
-- by NicholasBugs -
spring struts velocity ...
这样的配置真啰嗦,还不如直接用spring MVC.
-- by slaser







评论排行榜