Hibernate夜未眠(中)
?? 我的
?? H...
?? ibernate拾錦...
?? H...
?? ibernate拾錦...
11、formula屬性
??? property元素中的formula屬性用于指定一個SQL表達式,可調用SQL函數貨包括子查詢。
??? <property name = "totalPrice" formula = "(select sum(o.price) from ORDERS o where o.CUSTUMER_ID = '1222')"/>
??? 當查詢CUSTOMER對象時,執行語句:select ID,NAME,(select SUM(O.PRICE) from ORDERS o where o.CUSTOMER_ID = '1222') from CUSTOMERS;
12、dynamic-insert和dynamic-update
??? 應用中把class中dynamic-insert和dynamic-update值設為true可以提高效率,即插入時僅包含字段取值不為null的字段,更新時僅包含字段值發生變化的屬性。
13、Hibernate中package屬性
??? package屬性用于指定本映射文件中包含類的包名為全局包,從而不必為每個類指定完整包名。
14、OID
??? Hibernate中用對象標識符OID來維持java對象和表中記錄的對應關系,OID定義為整數類型(short、int、long),通常由Hibernate或通過底層數據庫給OID賦值。
15、標識符生成器
??? Hibernate中內置標識符生成器,均適合代理主鍵
??? increment:由Hibernate自增生成
??? identity:由底層數據庫生成
??? sequence:底層數據庫序列生成
??? hilo:根據high/low等算法生成以特定表字段作high值
??? native:自動選擇identity、dequence、hilo
??? assgned:自然主鍵(盡量避免使用)
16、inverse屬性
??? 為避免Hibernate在清理緩存時對相關聯對象都執行更新操作,將inverse設置為true,將主控權交給many一方,以僅控mamy方狀態更新對象。
17、cascade屬性
??? 級聯屬性,當cascade屬性設置為delete,在刪除一對象時自動刪除與其級聯的對象,刪除后持久化對象變為臨時狀態。
18、session清理緩存時間點
??? a、commit()時先清理緩存,再向DATABASE提交事務
??? b、執行find()和iterate()時,確保對象最新狀態(iterate()在Hibernate 3#已取消)
??? c、顯式調用flush()方法時
19、持久化對象三狀態
??? a、臨時狀態,剛new,不處于session緩存中
??? b、持久化狀態,已持久化并加入session中
??? c、游離狀態,被持久化,但不在session中
20、load()和get()
??? 兩者都可以由OID加載一個持久化對象,當DB中不存在與OID對應記錄時,load()方法會拋出異常,而get()會返回Null值。
??? 待續...
?(轉載請注明出處)
?
鳳凰涅槃/浴火重生/馬不停蹄/只爭朝夕
???? 隱姓埋名/低調華麗/簡單生活/完美人生
posted on 2007-10-07 00:27 poetguo 閱讀(1434) 評論(2) 編輯 收藏 所屬分類: Hibernate