一、一對(duì)多映射
1、在映射一對(duì)多的雙相關(guān)聯(lián)關(guān)系時(shí),應(yīng)該在one方把inverse屬性設(shè)為true,可以提高應(yīng)用的性能。
2、建立兩個(gè)對(duì)象的雙向關(guān)聯(lián)時(shí),應(yīng)該同時(shí)修改關(guān)聯(lián)兩端的對(duì)象的應(yīng)用屬性,這樣使程序更加健壯,提高業(yè)務(wù)邏輯層的獨(dú)立性,使業(yè)務(wù)邏輯層的程序代碼不受hibernate實(shí)現(xiàn)的影響;同理,當(dāng)解除雙相關(guān)聯(lián)關(guān)系時(shí),也應(yīng)該修改關(guān)聯(lián)兩端的對(duì)象的相應(yīng)屬性。
eg://添加
customer.getOrders().add(order);
order.setCustomer(customer);
//刪除
customer.getOrders().remove(order);
order.setCustomer(null);
3、在定義一對(duì)多映射中“一”的POJO類(lèi)時(shí),注意要private Set orders?= new HashSet();//通常把它初始化為集合實(shí)現(xiàn)類(lèi)的一個(gè)實(shí)例,這樣避免訪問(wèn)取值為null,引發(fā)NullPointerException異常,提高健壯性。
二、Session三種檢索方法:
1.load():根據(jù)給定OID從數(shù)據(jù)庫(kù)中加載一個(gè)持久化對(duì)象,如數(shù)據(jù)庫(kù)中沒(méi)有則拋出net.sf.hibernate.ObjectNotFoundException異常。
2.get():根據(jù)給定OID從數(shù)據(jù)庫(kù)中加載一個(gè)持久化對(duì)象,如數(shù)據(jù)庫(kù)中沒(méi)有則返回null。
3.find():按照參數(shù)指定的HQL語(yǔ)句加載一個(gè)或多個(gè)持久化對(duì)象,實(shí)際是HQL檢索方式的一種簡(jiǎn)寫(xiě)形式。
三、hql查詢(xún):
在數(shù)組和Collection中的查詢(xún):
String hql = "select??u from?User u where u in (:users)";
query.setParameterList("users", users);
//括號(hào)千萬(wàn)別忘寫(xiě),否則出現(xiàn)如下錯(cuò)誤:
2006-07-07 11:07:35 WARN [org.hibernate.util.JDBCExceptionReporter] - SQL Error: 907, SQLState: 42000
2006-07-07 11:07:35 ERROR [org.hibernate.util.JDBCExceptionReporter] - ORA-00907: 缺失右括號(hào)
posted on 2006-08-16 15:37
阿成 閱讀(420)
評(píng)論(0) 編輯 收藏 所屬分類(lèi):
Hibernate