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

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

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

    MDA/MDD/TDD/DDD/DDDDDDD
    posts - 536, comments - 111, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    hibernate問題

    Posted on 2007-09-28 03:51 leekiang 閱讀(638) 評論(0)  編輯  收藏 所屬分類: hibernate
    1,get一個(gè)對象并打算修改這個(gè)對象時(shí),hibernate會判斷該對象的屬性值是否有變動,如果沒有任何變動,hibernate不會執(zhí)行update語句。在同時(shí)修改頁面上的多條記錄時(shí)可發(fā)現(xiàn)這一點(diǎn)。

    2,執(zhí)行以下語句時(shí)hibernate3.0.5會報(bào)錯(cuò),而3.2不會
    sql="select 1+1 from dual";
    session.createSQLQuery(sql).uniqueResult()
    報(bào)錯(cuò):addScalar() or addEntity()?must be called on a sql query before executing the query.

    3,<many-to-one> 的lazy設(shè)置為true時(shí),get子對象不會把該父對象抓過來,但可以手動寫代碼抓取父對象
    如 Son son =(Son)this.getHibernateTemplate().get(Son.class, id);
    ??? ?? 然后執(zhí)行 son.getParent().getName();
    ?? 這樣不僅僅會抓取到name,其他所有的屬性如age,sex等都會取到,即用p.getParent().getAge()達(dá)到了同樣的效果,后臺都執(zhí)行了select * from parent where id=??? 注意用p.getParent()僅能得到parent的id.
    ?? 這時(shí)debug查看parent對象的內(nèi)存快照,看到的是一個(gè)用cglib實(shí)現(xiàn)的代理對象,
    Hibernate通過使用CGLIB,來實(shí)現(xiàn)動態(tài)構(gòu)造一個(gè)目標(biāo)對象的代理類對象,并且在代理類對象中包含目標(biāo)對象的所有屬性和方法,而且所有屬性均被賦值為null。通過調(diào)試器顯示的內(nèi)存快照,我們可以看出此時(shí)真正的User對象,是包含在代理對象的CGLIB$CALBACK_0.target屬性中,當(dāng)調(diào)用son.getName()方法,這時(shí)通過CGLIB賦予的回調(diào)機(jī)制,實(shí)際上調(diào)用CGLIB$CALBACK_0.getName()方法,當(dāng)調(diào)用該方法時(shí),Hibernate會首先檢查CGLIB$CALBACK_0.target屬性是否為null,如果不為空,則調(diào)用目標(biāo)對象的getName方法,如果為空,則會發(fā)起數(shù)據(jù)庫查詢,生成類似這樣的SQL語句:select * from parent where id=’1’;來查詢數(shù)據(jù),并構(gòu)造目標(biāo)對象,并且將它賦值到CGLIB$CALBACK_0.target屬性中。
    這樣,通過一個(gè)中間代理對象,Hibernate實(shí)現(xiàn)了實(shí)體的延遲加載,只有當(dāng)用戶真正發(fā)起獲得實(shí)體對象屬性的動作時(shí),才真正會發(fā)起數(shù)據(jù)庫查詢操作。
    ??? <many-to-one> 的lazy設(shè)置為false時(shí),抓取父對象沒有采用代理機(jī)制。

    4,用session.close(),執(zhí)行多次查詢后報(bào)session is closed的錯(cuò)誤,而hibernateSessionFactory.closeSession()沒有這個(gè)問題,這是什么原因?

    5,ORA-01466: 無法讀數(shù)據(jù) - 表定義已更改
    原因是系統(tǒng)時(shí)間修改造成的,其他原因詳見
    http://www.orafaq.com/usenet/comp.databases.oracle.server/2007/03/31/1586.htm

    6,
    spring的一個(gè)方法上有事務(wù),先用hibernate加載一個(gè)對象,接著改變對象的某個(gè)屬性的值,
    再用sql去數(shù)據(jù)庫查對應(yīng)的記錄,然后才提交。
    用sql去查時(shí)發(fā)現(xiàn)對應(yīng)的字段也改變了,這是怎么回事?


    ??
    主站蜘蛛池模板: 亚洲国产三级在线观看| 亚洲无码日韩精品第一页| 亚洲AV无码久久| 精品国产呦系列在线观看免费| 国产免费卡一卡三卡乱码| 亚洲av永久无码精品秋霞电影秋| 女人18毛片a级毛片免费| 亚洲另类自拍丝袜第五页| 日韩免费视频播播| 国产成人亚洲精品播放器下载 | 亚洲国产成人久久一区二区三区| 欧美大尺寸SUV免费| 亚洲欧美日韩国产精品一区| 韩国日本好看电影免费看| 国产成人精品久久亚洲高清不卡| 免费永久在线观看黄网站| 国产免费一级高清淫曰本片| 国产成人无码综合亚洲日韩| 午夜无码A级毛片免费视频| 亚洲图片中文字幕| 蜜桃精品免费久久久久影院 | 国产精品福利在线观看免费不卡| 国产亚洲情侣一区二区无码AV | 可以免费看的卡一卡二| 亚洲日韩国产二区无码 | 青柠影视在线观看免费| 亚洲国产成人久久精品影视| 我的小后妈韩剧在线看免费高清版 | 免费无码又爽又刺激网站直播| 久久久久亚洲精品影视| 99热在线精品免费全部my| 朝桐光亚洲专区在线中文字幕| 亚洲成av人片在线观看无码不卡| 每天更新的免费av片在线观看| 亚洲αⅴ无码乱码在线观看性色| 中文字幕亚洲一区二区va在线| 99久久免费国产香蕉麻豆| 日日躁狠狠躁狠狠爱免费视频 | 国产成人AV免费观看| 亚洲第一男人天堂| 国产成人免费手机在线观看视频|