隨筆 - 303  文章 - 883  trackbacks - 0
          <2007年4月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          歡迎光臨! 
          閑聊 QQ:1074961813

          隨筆分類(lèi)(357)

          我管理的群

          公共blog

          • n維空間
          • Email : java3d@126.com 群 : 12999758

          參與管理的論壇

          好友的blog

          我的其他blog

          朋友的網(wǎng)站

          搜索

          •  

          最新評(píng)論

          (本人的文章是在放屁,再次建議,大家一定要好好地看看這本書(shū))


          Hibernate Quickly

          --讀書(shū)筆記



          大家好啊 我是尋覓!
                 相信大家已經(jīng)對(duì)Hibernate 有了初步的了解,接下來(lái)我們將以最短的章節(jié)進(jìn)一步去了解剩下的章節(jié);這里我把書(shū)中我覺(jué)得最重要的內(nèi)容寫(xiě)出來(lái)和大家分享,剩下的內(nèi)容大家可以通過(guò)看這本書(shū)補(bǔ)上,沒(méi)錢(qián)買(mǎi)書(shū)的朋友可以到我的前一個(gè)文《Hibernate Quickly--讀書(shū)筆記(2)》那里去下載,英文版的pdf電子書(shū)去看看;
               好了進(jìn)入正題,上次我們把配置文件給講了:大家先看看這個(gè)圖,整個(gè)基礎(chǔ)知識(shí)部分,我們都將圍繞著這個(gè)圖來(lái)講解:





          配置、SessionFactory和Session使用部分講完了,我們繼續(xù)講Session緩存,先看一段相關(guān)代碼:


          //從SessionFactory中獲取一個(gè)Session
          Session session = factory.openSession();

          //將Event加載入Session中,并實(shí)例化Event對(duì)象
          Event e = (Event) session.load(Event.class, myEventId);

              
          //為加載的對(duì)象取名
          e.setName("New Event Name");

              
          //對(duì)對(duì)象進(jìn)行操作,可以見(jiàn)到通過(guò)這種方式,可以減少對(duì)數(shù)
          //據(jù)庫(kù)的操作,提高系統(tǒng)的性能和安全性;通常我們的多
          //部操作只需要一次的數(shù)據(jù)庫(kù)持久化操作
          session.saveOrUpdate(e);

              
          //第二次操作
          Event e = (Event) session.load(Event.class, myEventId);
          e.setDuration(
          180);
          session.saveOrUpdate(e);

          //刷新緩沖區(qū)將數(shù)據(jù)寫(xiě)入數(shù)據(jù)庫(kù),完成數(shù)據(jù)持久化
          session.flush();


          當(dāng)我們的數(shù)據(jù)訪問(wèn)十分頻繁時(shí),我們還可以使用事務(wù)(Transaction實(shí)現(xiàn)批操作)和數(shù)據(jù)庫(kù)池方式:這時(shí)我們需要設(shè)置一下我們的配置文件 hibernate.cfg.xml:


          <property name="transaction.factory_class">
          org.hibernate.transaction.JTATransactionFactory
          </property>
          <property name="jta.UserTransaction">
          java:comp/UserTransaction
          </property>


          接著我們就可以使用事務(wù)(Transaction)了:


          //開(kāi)始第一個(gè)事務(wù)
          Transaction tx0 = session.beginTransaction();
          Event event 
          = new Event();
          //進(jìn)行操作
          session.saveOrUpdate(event);

          //開(kāi)始第二個(gè)事務(wù)
          Transaction tx1 = session.beginTransaction();
          Location location 
          = new Location();
          //進(jìn)行操作
          session.saveOrUpdate(location);

          //分別提交兩個(gè)事務(wù)
          tx0.commit();
          tx1.commit();


          這里使用了Hibernate的JTA事務(wù),它讓你能像對(duì)待單一事務(wù)一樣對(duì)待多個(gè)事務(wù);數(shù)據(jù)池書(shū)中沒(méi)這么提起,大家自己看 p74 頁(yè)中的介紹;

          接著我們進(jìn)入主要的內(nèi)容,Session緩存

           

          緩存服務(wù)

          提供者類(lèi)

          類(lèi)型

          EHCache

          org.hibernate.cache.EhCacheProvider

          內(nèi)存,磁盤(pán)

          OSCache

          org.hibernate.cache.OSCacheProvider

          內(nèi)存,磁盤(pán)

          SwarmCache

          org.hibernate.cache.SwarmCacheProvider

          集群

          TreeCache

          org.hibernate.cache.TreeCacheProvider

          集群



          不同類(lèi)型的緩存均有其特性;

           

          緩存服務(wù)

          只讀

          讀寫(xiě)

          單讀寫(xiě)

          是否支持務(wù)

          EHCache

          OSCache

          SwarmCache

          TreeCache



          根據(jù)我們的需要選擇要用的Cache,當(dāng)然我們也可以自己定義咯(這里不講大家自己看書(shū)
          P81頁(yè));下面給個(gè)例子

          ehcache.xml

           
          <!--聲明使用EHCache緩存服務(wù)-->
          <ehcache>
          <!--設(shè)置磁盤(pán)存儲(chǔ)的位置-->
          <diskStore path="java.io.tmp"/>
          <!--一般常規(guī)設(shè)置-->
          <defaultCache
          <!--內(nèi)存保存緩存對(duì)象的個(gè)數(shù)-->
          maxElementsInMemory="10"
          <!--設(shè)置緩存對(duì)象是會(huì)過(guò)期的-->
          eternal="false"
          <!--對(duì)象的存活期-->
          timeToIdleSeconds="120"
          timeToLiveSeconds="120"
          <!--超過(guò)maxElementsInMemory是否保存至diskStore中-->
          overflowToDisk="true"/>

          <!--為Event對(duì)象設(shè)置緩存,設(shè)置選項(xiàng)與上面對(duì)應(yīng)-->
          <cache name="com.manning.hq.ch03.Event"
          maxElementsInMemory
          ="20"
          eternal
          ="false"
          timeToIdleSeconds
          ="120"
          timeToLiveSeconds
          ="180"
          overflowToDisk
          ="true"/>
          </ehcache>


          OK講完咯,大家會(huì)覺(jué)得瞞亂滴,沒(méi)關(guān)系下個(gè)文章,我將直接跳到一個(gè)Spring&Hibernate的

          例子;通過(guò)簡(jiǎn)單實(shí)例了解Hibernate的使用。

          后面還有個(gè)小節(jié)講的是繼承問(wèn)題,這個(gè)大家都有接觸過(guò)自己看看估計(jì)沒(méi)問(wèn)題!

          到這里書(shū)中的基礎(chǔ)部分內(nèi)容OVER了,

          接著這樣安排大家自己把后面的HQL和Hibernate使用的細(xì)節(jié)看看;

          謝謝大家的支持!!??!下個(gè)文見(jiàn)了,呵呵~~~~~~






          地震讓大伙知道:居安思危,才是生存之道。
          posted on 2007-04-07 11:36 小尋 閱讀(333) 評(píng)論(1)  編輯  收藏 所屬分類(lèi): j2se/j2ee/j2me

          FeedBack:
          # re: Hibernate Quickly--讀書(shū)筆記(3) [未登錄](méi) 2007-05-15 10:41 SDFSD
          3TRWERE  回復(fù)  更多評(píng)論
            
          主站蜘蛛池模板: 赫章县| 宾阳县| 满洲里市| 巴塘县| 杨浦区| 西华县| 孟津县| 嘉黎县| 绥化市| 察隅县| 清苑县| 鸡西市| 揭西县| 察哈| 黄大仙区| 射洪县| 洪雅县| 鸡泽县| 伊宁市| 深州市| 方山县| 鄂托克旗| 温宿县| 富蕴县| 阳新县| 平泉县| 应城市| 林甸县| 绵阳市| 明水县| 眉山市| 廊坊市| 蕲春县| 五家渠市| 孟州市| 宝鸡市| 天气| 象山县| 高陵县| 东乌| 久治县|