网页制作与网站发布,网站开发招标评分标准,elision豪华级创意企业wordpress,工信部域名备案查询官网我们一开始用session都用HibernateUtil工具类获得Session对象#xff0c;因为该工具类可以保证将线程不安全的Session绑定到当前线程内#xff0c;但每次返回的对象都是一个新的session#xff0c;我写了一个测试方法如下#xff1a;
Testpublic void test() {Session s1 …我们一开始用session都用HibernateUtil工具类获得Session对象因为该工具类可以保证将线程不安全的Session绑定到当前线程内但每次返回的对象都是一个新的session我写了一个测试方法如下
Testpublic void test() {Session s1 HibernateUtils.openSession();Session s2 HibernateUtils.openSession();if(s1 s2) {System.out.println(true);}else {System.out.println(false);}}输入结果如下 在Hibernate3开始Hibernate增加了SessionFactory.getCurrentSession();方法该方法可以直接获取当前线程的Session对象而且每次返回的都是同一个对象下面是配置步骤首先我们在hibernate.cfg.xml写入如下代码 !-- 把session和线程绑定从而实现一个线程只有一个Session --property namehibernate.current_session_context_classthread/property
这个时候就配置好了下面我们写一个测试方法来测试一下吧
Testpublic void test() {Session s1 HibernateUtils.getCurrentSession();Session s2 HibernateUtils.getCurrentSession();if(s1s2) {System.out.println(true);}}下面这个代码就是获取当前线程的session我将它封装到HibernateUtils类里面了
Session s1 HibernateUtils.getCurrentSession()具体代码如下
public static Session getCurrentSession() {//只有配置了把session和线程绑定之后才能使用此方法否则返回值为nullreturn factory.getCurrentSession();}这个时候我们在运行一下 发现输出结果为true说明返回的是同一个对象 注Hibernate的Session会随着getCurrentSession(方法自动打开并伴随事物的·提交自动关闭非常方便