日期:2011-03-22 16:12:00 来源:本站整理
hibernate3学习笔记(六) Session管理[Java编程]
本文“hibernate3学习笔记(六) Session管理[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
请注意,在hibernate中SessionFactory是被计划成线程安全(Thread-safe)的,遗憾的是,Session却线程不安全.
这就意味着:有大概多个线程同享并操作同一个Session从而很简单使数据混乱.
办理的办法以下:(其实hibernate的文档中早已经提过了)
新建HibernateUtil类:
1.import org.apache.commons.logging.Log;
2.import org.apache.commons.logging.LogFactory;
3.import org.hibernate.*;
4.import org.hibernate.cfg.*;
5.
6.public class HibernateUtil {
7. private static Log log = LogFactory.getLog(HibernateUtil.class);
8. private static final SessionFactory sessionFactory;
9. 10. static {
11. try {
12. // Create the SessionFactory 13. sessionFactory = new Configuration().configure()
14. .buildSessionFactory();
15. } catch (Throwable ex) {
16. // Make sure you log the exception, as it might be swallowed 17. log.error("Initial SessionFactory creation failed.", ex);
18. throw new ExceptionInInitializerError(ex);
19. }
20. }
21. 22. public static final ThreadLocal session = new ThreadLocal();
23. 24. public static Session currentSession() {
25. Session s = (Session) session.get();
26. 27. // Open a new Session, if this Thread has none yet 28. if (s == null) {
29. s = sessionFactory.openSession();
30. session.set(s);
31. }
32. 33. return s;
34. }
35. 36. public static void closeSession() {
37. Session s = (Session) session.get();
38. 39. if (s != null) {
40. s.close();
41. }
42. 43. session.set(null);
44. }
45.}
以上是“hibernate3学习笔记(六) Session管理[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论