<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    解決之道

    個人日記
    posts - 33, comments - 1, trackbacks - 0, articles - 7
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    [導入]Hibernate學習筆記一

    Posted on 2008-07-31 15:12 閱讀(204) 評論(0)  編輯  收藏
     Configuration:負債管理Hibernate的配置信息,Hibernate的入口

    1、configure()方法默認會在classpath下面尋找hibernatev.cfg.xml

    2、支持帶參數的訪問,可以指定hbm.xml,如:

    File file = new File(“d:\\cfg\\hibernate.xml”);

    Configuration config = new Configuration().config(file);

    Session的緩存:

    1)、充當蓄水池的作用,減少程序訪問數據庫的次數。

    2)、保證緩存中的數據與數據庫同步,同步的具體情況看FlushMode是什么

    清理緩存是指查看緩存中的數據與數據庫是否同步,不同步就發送更新語句

    FlushMode.AUTOHibernate判斷對象屬性有沒有改變,是默認的清理模式

    FlushMode.COMMIT:在事務結束之前清理Session的緩存,其他任何時候都不清理緩存

    FlushMode.NEVER:除非強制調用Session.flush(),或則永不清理緩存。所作的修改只限與內存

    FlushMode.ALWAYS:在每一個查詢語句前都調用flush()進行緩存管理,這種模式經常不必要并且低效的。

    Hibernate定義并支持下列對象狀態(state):

    ·         瞬時(Transient) - new操作符創建,且尚未與Hibernate Session 關聯的對象被認定為瞬時(Transient)的。瞬時(Transient)對象不會被持久化到數據庫中,也不會被賦予持久化標識(identifier)。 如果瞬時(Transient)對象在程序中沒有被引用,它會被垃圾回收器(garbage collector)銷毀。 使用Hibernate Session可以將其變為持久(Persistent)狀態。(Hibernate會自動執行必要的SQL語句)

    ·         持久(Persistent) - 持久(Persistent)的實例在數據庫中有對應的記錄,并擁有一個持久化標識(identifier)。持久(Persistent)的實例可能是剛被保存的,或剛被加載的,無論哪一種,按定義,它存在于相關聯的Session作用范圍內。 Hibernate會檢測到處于持久(Persistent)狀態的對象的任何改動,在當前操作單元(unit of work)執行完畢時將對象數據(state)與數據庫同步(synchronize)。 開發者不需要手動執行UPDATE。將對象從持久(Persistent)狀態變成瞬時(Transient)狀態同樣也不需要手動執行DELETE語句。

    ·         脫管(Detached) - 與持久(Persistent)對象關聯的Session被關閉后,對象就變為脫管(Detached)的。 對脫管(Detached)對象的引用依然有效,對象可繼續被修改。脫管(Detached)對象如果重新關聯到某個新的Session上,會再次轉變為持久(Persistent)(Detached其間的改動將被持久化到數據庫)。 這個功能使得一種編程模型,即中間會給用戶思考時間(user think-time)的長時間運行的操作單元(unit of work)的編程模型成為可能。我們稱之為應用程序事務,即從用戶觀點看是一個操作單元(unit of work)

    立即檢索:

             立即檢索的配置文件標識符為lazy=”false”,表示Hibernate在數據庫中取得字段值組裝好一個對象后,會立即再從數據庫此對象多關聯的對象,如果這個關聯的對象還有關聯對象,則再組裝此關聯對象。

              一對多和多對一關聯對象則不適合立即檢索。

    延遲檢索:

          立即檢索的配置文件標識符為lazy=”true”,就是需要用到時才會去去被關聯的對象。

    預先抓取指的是Hibernate通過select語句使用outer join來獲得對象的關聯實例或者關聯集合。

    Hibernate2.x版本:outer-join=”true”

    Hibernate3.x版本:fetch=”join” 

    <one-to-one name="cer" class="com.kissjava.Certificate" fetch="join" cascade="all"></one-to-one>1

    <many-to-one name="team" column="team_id" class="com.kissjava.Team" fetch="join"></many-to-one>2

    1)一個一對一關聯的對象屬性,名為cer,在得到Student對象時,采用預先抓取得到cer對象,并且級聯為all,說明Student的增加、刪除及修改操作都會影響到cer對象。

    2)一個多對一關聯的對象屬性,名為team,在Student表中通過team_idteam對象發生關聯,team的實體類是Team,在取得Student實例時,使用預先抓取得到team對象。



    枯寬 2008-04-10 08:49 發表評論

    文章來源:http://m.tkk7.com/kissjava/archive/2008/04/10/191727.html

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 免费手机在线看片| 豆国产96在线|亚洲| a级毛片免费高清毛片视频| 亚洲国产一区明星换脸| 日韩精品视频在线观看免费| 亚洲av无码国产精品色在线看不卡| 美女隐私免费视频看| 国产亚洲成人久久| 国产97视频人人做人人爱免费| 国产成人99久久亚洲综合精品| 一级毛片视频免费| 久久99国产亚洲高清观看首页| 成全动漫视频在线观看免费高清版下载| 亚洲va中文字幕无码久久不卡 | 国产亚洲精品免费视频播放| 一级毛片免费在线| 亚洲色婷婷六月亚洲婷婷6月| 免费在线观看一级片| 亚洲精品中文字幕无码AV| 女人张开腿给人桶免费视频| 男性gay黄免费网站| 亚洲日产韩国一二三四区| 久久综合给合久久国产免费| 亚洲人精品亚洲人成在线| 高清在线亚洲精品国产二区| 免费精品久久天干天干| 亚洲成人网在线观看| 国产免费卡一卡三卡乱码| a色毛片免费视频| 国产精品亚洲综合五月天| 亚洲成av人片天堂网老年人| 国产偷伦视频免费观看| 亚洲av无码不卡久久| 亚洲男人的天堂在线va拉文| 无码人妻一区二区三区免费n鬼沢| 国产成人精品日本亚洲18图| 亚洲国产一区二区视频网站| 97在线观看永久免费视频| 色爽黄1000部免费软件下载| 久久亚洲精品无码AV红樱桃| 日韩在线天堂免费观看|