Hibernate夜未眠(下)
??? 又見凌晨時(shí)分...
??? 我的
??? H...
??? ibernate拾錦...
21、session激發(fā)觸發(fā)器
???如果一個(gè)session激發(fā)一個(gè)觸發(fā)器,由于觸發(fā)器對session是透明的,一次造成數(shù)據(jù)不一致。
??? 解決方法:調(diào)用session的flush()方法和refresh()使其同步;
??? 由于使用觸發(fā)器使得在update時(shí)候無法比較屬性是否發(fā)生變化。
??? 解決方法:在class元素中設(shè)置select-before-update為true。
22、精粒度對象模型
??? 從一類中抽象出來的單獨(dú)類,提高代碼重用性,被抽象出來的類在映射文件中定義為<component>,無OID,必須依賴父類。
23、session三種檢索類型
??? a、load()跟get()都以O(shè)ID加載
?????? Customer customer = (Customer)session.load(Customer.class,new Long(1));//同get()方法
??? b、find()方法通過HQL進(jìn)行檢索(Hibernate 3# 取消該方法)
?????? List customeLists = session.find("from Customer as c where c.id = 1);
24、延遲檢索策略(Hibernate 3# 默認(rèn)為true)
??? class種lazy為true時(shí)設(shè)置延遲檢索,load方法僅返回代理類實(shí)例,在第一次使用才加載該實(shí)例所有數(shù)據(jù),只對load方法有效。
25、HQL檢索方式
??? List result = session.createQuery("HQL language")
?????????????????? .setString("customerName","improviser")
?????????????????? .setInteger("customerAge",23)
?????????????????? .list();
26、QBC檢索方式
??? QBC由Criteria和Criterion接口、Expression類組成,支持運(yùn)行時(shí)生成查詢語句。Expression提供查詢靜態(tài)方法,返回Criterion對象,Criteria的add方法加入Criterion對象,并以list()執(zhí)行查詢,返回查詢結(jié)果。
27、QBE檢索方式
??? 先創(chuàng)建一個(gè)對象模板,再檢索所與該模板相同對象,Example創(chuàng)建一個(gè)Criterion對象,把Example對象中不為null的屬性作為查詢條件,QBE只支持"="和"like"比較。
28、分頁查詢
??? query.setFirstResult(0);//從第一頁開始檢索
??? query.setMaxResults(10);//最多檢出10條記錄
29、字符配匹模式
??? 字符串通配符為"%"和"_",中文字應(yīng)為"%%"配匹;在QBC中可以用MatchMode的靜態(tài)常量實(shí)例來設(shè)定字符串模式,如Expression.like("name","i",MatchModle.START))。
30、事務(wù)一般用法
?1?????try
?2? ????{
?3????????tx?= ?session.beginTransaction();
?4? ???????
?5? ???????tx.commit();
?6?????}catch (Exception?e)
?7? ????{
?8????????if(tx!=null )
?9??????????try {
10? ??????????????tx.rollback();
11?????????????}catch (HibernateException?ex{}
12?????}finally
13? ????{
14??????????try {
15? ??????????session.close();
16?????????????}catch (){}
17? ????}
?2? ????{
?3????????tx?= ?session.beginTransaction();
?4? ???????

?5? ???????tx.commit();
?6?????}catch (Exception?e)
?7? ????{
?8????????if(tx!=null )
?9??????????try {
10? ??????????????tx.rollback();
11?????????????}catch (HibernateException?ex{}
12?????}finally
13? ????{
14??????????try {
15? ??????????session.close();
16?????????????}catch (){}
17? ????}
???? 隨著事務(wù)提交,我的“夜未眠”也全部提交完成,沒有重點(diǎn),只有基本點(diǎn),沒有高難性,只有實(shí)用性。
???? ...
???? 在這中秋過后的季節(jié),仍吹著夏天的風(fēng),似乎讓我們絲毫無法感受到冬天在四季中的份額,當(dāng)夏日依依不舍流連忘返不愿離去,我想,我喜歡的是秋天的清爽;我想,我更喜歡的是冬天的到來;我想,我不能再如此未眠...
???? 二零零七年十月寫于廣州
??? (轉(zhuǎn)載請注明出處)
?
鳳凰涅槃/浴火重生/馬不停蹄/只爭朝夕
???? 隱姓埋名/低調(diào)華麗/簡單生活/完美人生
posted on 2007-10-08 00:42 poetguo 閱讀(1935) 評論(5) 編輯 收藏 所屬分類: Hibernate