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

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

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

    【永恒的瞬間】
    ?Give me hapy ?
     

    hiberate 一般而言,ORM的數據包含如下幾個

    1.       務級緩存(Transcation Layer Cache

    2.       /級緩存(Application/Process Layer Cache

    3.        分布式存(Cluster Layer Cache

    Hibernate數據存(Cache)分兩個次,以Hibernate語義加以區分,

    可分

    1.       內部存(Session Level,也稱級緩存)

    2.       級緩存(SessionFactory Level,也稱級緩存)

    Hibernate中,存將在以下情況中發揮作用:

    1.       id[]數據每個實體唯一的OID

    2.      

     

    @ Cache緩存:

    1.        Session level (一級緩存):

             主要作用于:主鍵獲得的數據, 延遲初始化(Lazy Initialization)起作用.

             狀態依賴于:Session的建立而建立(銷毀而銷毀).// Session是個Map容器!

             清除Session對象:  Session.Save()也是交給Session level來管理,很多的時候會發生OutOfMemoryError異常,所以要及時發送給數據庫session.flush(),清除session.clear()session.evict(user1);

            SQL ServerOracle, Hibernat定屬性hibernate.jdbc.batch_size多少數據發送

     <hibernate-configuration> <session-factory>

    <property name="hibernate.jdbc.batch_size">100

    </property> // MySQL是不支持的,

    </session-factory>

    <hibernate-configuration>

     

    2.     SessionFactory level(級緩)

           級緩存是SessionFactory級別的全局, 程范或者集群范, 存放的象的松散數據,可能出發問題, 需要采用適當的并發訪問策略,策略存的數據提供了事隔離級別存適配器用于把具體的實現軟件與Hibernate集成。第二級緩存是可的,可以在個集合的粒度上配置第二級緩存。

               可以使用不同的類庫,比如ehcacheoscache等,需要hibernate.cache.provider_class,之后,需要在映射文件中指定各個映射(以及collection)存同策略。Hibernate提供了一下4內置的存同策略:
          1. read-only
             
    于不會生改的數據,可使用只存。
          2. nonstrict-read-write
             
    如果程序
    發訪問下的數據同要求不是非常格,且數據更新操作低,可以采用本選項好的性能。
          3. read-write
             
    格可存。基于時間戳判定機制,實現了“read committed”事隔離等。可用于數據同要求格的情況,但不支持分布式緩存。這也是實際應用中使用最多的同步策略。
          4. transactional
             
    事務型緩存,必須運行在JTA事務環境中。

    如果使用查詢緩存,加上hibernate.cache.use_query_cache=true,只有當經常使用同樣的參數進行查詢時,這才會有些用處。該設置將會創建兩個緩存區域 - 一個用于保存查詢結果集(org.hibernate.cache.StandardQueryCache) 另一個則用于保存最近查詢的一系列表的時間戳(org.hibernate.cache.UpdateTimestampsCache) 請注意:在查詢緩存中,它并不緩存結果集中所包含的實體的確切狀態;它只緩存這些實體的標識符屬性的值、以及各值類型的結果。 所以查詢緩存通常會和二級緩存一起使用。 絕大多數的查詢并不能從查詢緩存中受益,所以Hibernate默認是不進行查詢緩存的。如若需要進行緩存,請調用 Query.setCacheable(true)方法。這個調用會讓查詢在執行過程中時先從緩存中查找結果, 并將自己的結果集放到緩存中去。

    Hibernate的二級緩存策略的一般程如下:

     

    1) 條件查詢候,出一條select * from table_name where . 選擇所有字段)這樣SQL查詢數據,一次得所有的數據象。

    2) 得的所有數據象根據ID放入到第二級緩存中。

    3) Hibernate根據ID訪問數據象的候,首先從Session級緩存中不到,如果配置了二級緩存,那從二級緩存中不到,再查詢數據,把果按照ID放入到存。

    4) 除、更新、增加數據的候,同更新存。

      Hibernate的二級緩存策略,是針對ID查詢存策略,于條件查詢則毫無作用。此,Hibernate提供了針對條件查詢Query存。

     

    HibernateQuery存策略的程如下:

     

    1) Hibernate首先根據些信息成一個Query KeyQuery Key包括條件查詢求一般信息:SQL, SQL需要的參數,記錄(起始位置rowStart,最大記錄個數maxRows),等。

    2) Hibernate根據Query KeyQuery存中對應果列表。如果存在,那返回果列表;如果不存在,查詢數據果列表,把整個果列表根據Query Key放入到Query存中。

    3) Query Key中的SQL及到一些表名,如果些表的任何數據生修改、除、增加等操作,些相Query Key都要從存中清空。

     

    么樣的數據適合存放到第二級緩存中?

    1 很少被修改的數據

    2 不是很重要的數據,允的數據

    3 不會被并發訪問的數據

    4 參考數據

    不適合存放到第二級緩存的數據?

    1 常被修改的數據

    2 財務數據,絕對不允

    3 與其他用共享的數據

    ,當save()update() saveOrUpdate()方法傳遞一個,或使用load() get()list()iterate() scroll()方法得一個, 該對象都將被加入到Session的內部存中。

    當隨后flush()方法被調象的狀會和數據取得同。 如果你不希望此同操作生,或者你正理大量象、需要有效管理內存,你可以調evict() 方法,從一級緩存中去掉象及其集合。如若要把所有的象從session存中底清除,需要調Session.clear(),不最好先Session.flush()

    SessionFactory也提供了移除存的方法,些方法是:
    sessionFactory.evict(Cat.class, catId); //evict a particular Cat
    sessionFactory.evict(Cat.class);  //evict all Cats
    sessionFactory.evictCollection("Cat.kittens", catId); //evict a particular collection of kittens
    sessionFactory.evictCollection("Cat.kittens"); //evict all kitten collections

     

    于事物管理的確定:

     hibernate.cfg.xml :

       <hibernate-configuration>

        <session-factory>

            ....

            <!-- 設定事務管理的工廠類 -->
            <property name="hibernate.transaction.factory_class">

                org.hibernate.transaction.JDBCTransactionFactory  </property>

    </hibernate-configuration>

    try {

        session = sessionFactory.openSession();  

        Transaction tx = session.beginTransaction();

        ....

        tx.commit();  // 必須commit才會更新資料庫

    } catch(HibernateException e) {

        tx.rollback();

    }

    Postil: 對于MySQL處理機制要建立事物表類型的

    類型的對照表:

    Java

    Hibernate

    SQL

    bytejava.lang.Byte

    byte

    TINYINT

    shortjava.lang.Short

    short

    SMALLINT

    intjava.lang.Integer

    integer

    INGEGER

    longjava.lang.Long

    long

    BIGINT

    floatjava.lang.Float

    float

    FLOAT

    doublejava.lang.Double

    double

    DOUBLE

    java.math.BigDecimal

    big_decimal

    NUMERIC

    charjava.lang.Character

    character

    CHAR(1)

    booleanjava.lang.Boolean

    boolean

    BIT

    java.lang.String

    string

    VARCHAR

    booleanjava.lang.Boolean

    yes_no

    CHAR(1)('Y''N')

    booleanjava.lang.Boolean

    true_false

    CHAR(1)('Y''N')

    java.util.Datejava.sql.Date

    date

    DATE

    java.util.Datejava.sql.Time

    time

    TIME

    java.util.Datejava.sql.Timestamp

    timestamp

    TIMESTAMP

    java.util.Calendar

    calendar

    TIMESTAMP

    java.util.Calendar

    calendar_date

    DATE

    byte[]

    binary

    VARBINARYBLOB

    java.lang.String

    text

    CLOB

    java.io.Serializable

    serializable

    VARBINARYBLOB

    java.sql.Clob

    clob

    CLOB

    java.sql.Blob

    blob

    BLOB

    java.lang.Class

    class

    VARCHAR

    java.util.Locale

    locale

    VARCHAR

    java.util.TimeZone

    timezone

    VARCHAR

    java.util.Currency

    currency

    VARCHAR

    posted on 2007-05-15 14:07 ???MengChuChen 閱讀(653) 評論(0)  編輯  收藏 所屬分類: hibernate
    主站蜘蛛池模板: 亚洲av午夜福利精品一区人妖| 午夜亚洲福利在线老司机| 亚洲伊人久久大香线蕉结合| 巨胸喷奶水视频www网免费| 国产亚洲精品美女2020久久| 国产亚洲?V无码?V男人的天堂 | 国产成人免费爽爽爽视频| 亚洲av日韩av永久无码电影| 国产亚洲综合网曝门系列| av免费不卡国产观看| 男人j进女人p免费视频| 久久亚洲AV无码精品色午夜麻豆| 韩国欧洲一级毛片免费| 久久午夜无码免费| 亚洲精品无码永久在线观看男男 | 亚洲午夜福利在线观看| 亚洲免费网站观看视频| 任你躁在线精品免费| 亚洲国产AV无码一区二区三区| 亚洲AV永久无码精品水牛影视| 永久免费bbbbbb视频| 久久精品无码专区免费青青| 免费毛片毛片网址| 天天爽亚洲中文字幕| 亚洲va在线va天堂va888www| 全部免费国产潢色一级| 免费精品国产自产拍在线观看图片| 亚洲免费在线观看| 亚洲av无码专区国产不乱码| 亚洲视频免费在线播放| 国产V亚洲V天堂无码| 国产免费69成人精品视频| 黄页网站在线观看免费高清| 免费看搞黄视频网站| 一进一出60分钟免费视频| 亚洲精品精华液一区二区 | 三上悠亚电影全集免费| 在线观看亚洲网站| 亚洲一本一道一区二区三区| 亚洲性无码av在线| 中文字幕在线观看亚洲|