日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hibernate openSession() 和 getCurrentSession的区别 .

發(fā)布時間:2025/6/15 编程问答 13 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hibernate openSession() 和 getCurrentSession的区别 . 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

getHiberanteTemplate 、getCurrentSession和OpenSession
采用getCurrentSession()創(chuàng)建的Session會綁定到當(dāng)前的線程中去、而采用OpenSession()則不會。

采用getCurrentSession()創(chuàng)建的Session在commit或rollback后會自動關(guān)閉,采用OpenSession()必須手動關(guān)閉。

采用getCurrentSession()需要在Hibernate.cfg.xml配置文件中加入如下配置:

如果是本地事物,及JDBC一個數(shù)據(jù)庫:

<propety name=”Hibernate.current_session_context_class”>thread</propety>

如果是全局事物,及jta事物、多個數(shù)據(jù)庫資源或事物資源:

<propety name=”Hibernate.current_session_context_class”>jta</propety>

使用spring的getHiberanteTemplate 就不需要考慮事務(wù)管理和session關(guān)閉的問題:

public List getEntityCriteria(final DetachedCriteria detachedCriteria) {
??????? return (List) getHibernateTemplate().executeFind(
??????????????? new HibernateCallback() {
??????????????????? public Object doInHibernate(Session session)
??????????????????????????? throws HibernateException {
??????????????????????? Criteria criteria = detachedCriteria
??????????????????????????????? .getExecutableCriteria(session);
??????????????????????? return criteria.list();
??????????????????? }
??????????????? });
??? }
??? public List getEntityCriteriaByPage(final DetachedCriteria detachedCriteria,final Page page) {
??????? return (List) getHibernateTemplate().executeFind(
??????????????? new HibernateCallback() {
??????????????????? public Object doInHibernate(Session session)
??????????????????????????? throws HibernateException {
??????????????????????? Criteria criteria = detachedCriteria
??????????????????????????????? .getExecutableCriteria(session);

??????????????????????? criteria.setFirstResult(page.getFirstItemPos());
??????????????????????? criteria.setMaxResults(page.getPageSize());
??????????????????????? return criteria.list();
??????????????????? }
??????????????? });
??? }

DetachedCriteria detachedCriteria = DetachedCriteria.forClass(Department.class);

detachedCriteria.add(Restrictions.eq("eid", seacher.getEid()));//企業(yè)id為條件查詢

detachedCriteria.add(Restrictions.in("dprtid", ids));//根據(jù)id數(shù)組查詢部門

detachedCriteria.add(Restrictions.like("name", "%" + seacher.getName()+ "%"));//名稱模糊查詢

getEntityCriteriaByPage(detachedCriteria,pageinfo);

經(jīng)過檢查激活連接為0,被使用的連接總是為1(應(yīng)為自己測試)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 package com.myj.hibernate.model;   import org.hibernate.HibernateException;   import org.hibernate.SessionFactory;   import org.hibernate.cfg.AnnotationConfiguration;   import org.hibernate.classic.Session;   import org.junit.AfterClass;   import org.junit.BeforeClass;   import org.junit.Test;   public class TeacherTest {   public static SessionFactory sessionFactory = null;   @BeforeClass   public static void beforeClass() {   try {   sessionFactory = new AnnotationConfiguration().configure().buildSession Factory();   } catch (HibernateException e) {   e.printStackTrace();   }   }   @Test   public void testTeacherSave() {   Teacher teacher = new Teacher();   teacher.setName("martian");   teacher.setAge(23);   Session session = sessionFactory.getCurrentSession();   session.beginTransaction();   session.save(teacher);   //測試getCurrentSession()方法,這里輸出true,因為在一個事務(wù)內(nèi),所以取得線程中的session   Session session1 = sessionFactory.getCurrentSession();   System.out.println(session == session1);   //commit()之后不用close(),假如使用sessionFactory.openSession();就需要close();   session.getTransaction().commit();   //測試getCurrentSession()方法,這輸出false,上一個事務(wù)已經(jīng)提交,這里將重新生成一個session   Session session2 = sessionFactory.getCurrentSession();   System.out.println(session == session2);   }   @AfterClass   public static void afterClass() {   sessionFactory.close();   }   }

總結(jié)

以上是生活随笔為你收集整理的Hibernate openSession() 和 getCurrentSession的区别 .的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩免费视频一区二区 | 欧美亚洲第一页 | 久久精品动漫 | 国产精品--色哟哟 | 午夜视频网址 | 黑人巨大精品欧美黑白配亚洲 | 91噜噜噜| 亚洲黄色网络 | 97麻豆视频 | 人妻无码久久一区二区三区免费 | 欧美另类视频 | 欧美三级网 | 日韩视频在线观看一区 | 欧美在线免费观看视频 | 韩日精品在线 | 色网站在线观看 | 在线蜜桃 | 欧美日韩一级大片 | 日本黄网站 | 草在线 | 亚洲视频一区二区 | 天堂影视在线观看 | 老妇裸体性激交老太视频 | 日韩草逼视频 | 四虎视频国产精品免费 | 韩国无码av片在线观看网站 | 极品尤物一区二区三区 | 亚洲婷婷在线视频 | 欧美一区二区二区 | 亚洲av毛片成人精品 | 毛片天天看 | 白白色在线观看 | 91av入口 | 欧美成人精品在线视频 | 97视频免费在线 | 狂野欧美性猛交免费视频 | 成全世界免费高清观看 | 好吊操视频这里只有精品 | 日本三区在线 | 久久在线电影 | 东方av在线免费观看 | 日本黄色特级片 | 日韩女同互慰一区二区 | 福利视频在线 | 在线观看亚洲免费视频 | 亚洲一区二区综合 | 欧美激情片一区二区 | 香蕉视频网页版 | 在线视频欧美亚洲 | 这里只有精品久久 | 国产香蕉9| 日本xxxx高潮少妇 | 超碰资源| 午夜精品一区二区三区三上悠亚 | 亚洲欧美一区二区三区四区五区 | 亚洲永久免费av | 日韩福利视频导航 | 人人干美女 | 涩涩小网站 | 成人不卡在线 | 毛片2 | 成人天堂噜噜噜 | 亚洲区在线播放 | 国产又黄又猛 | www黄色com| 色婷婷综合在线 | 亚洲色p | 黄色片网站在线播放 | 美女一级黄 | 久久色资源网 | 国产情侣久久 | 亚洲天堂日韩av | 另类图片亚洲色图 | av日日操| 熟女人妻aⅴ一区二区三区60路 | 一区二区三区播放 | 四季av一区二区夜夜嗨 | 欧美日韩aaa | 强乱中文字幕av一区乱码 | 男人天堂色 | 日本免费福利视频 | 国产精品成人无码专区 | 国产精品久久久久久一区二区三区 | 欧美极品jizzhd欧美仙踪林 | 亚洲高清视频免费观看 | 丰满肉嫩西川结衣av | 亚洲一区在线免费 | 久久91视频 | 国产三区av | 日本乱偷中文字幕 | 一区免费在线观看 | 久久国产精 | 91avcom| 精品五月天 | 在线看污视频 | 精品人妻一区二区三区日产乱码卜 | 亚洲欧美精品一区二区三区 | 操极品少妇 | 丁香六月婷婷综合 |