抓取策略(fetching strategy)
抓取策略(fetching strategy)
是指:當應用程式需要在(hibernate實體物件圖的)關聯關係間進行導航的時候, hibernate如何獲取關聯物件的策略。抓取策略可以在o/r對映的元資料中宣告,也可以在特定的hql 或條件查詢(criteria query)中過載宣告。
hibernate3 定義了如下幾種抓取策略:
一、單端**的批量抓取
student student = (student)session.load(student.class, 1);
system.out.println("student.name=" + student.getname());
system.out.println("classes.name=" + student.getclasses().getname());
session.gettransaction().commit();
1、fetch="select",
保持預設,同fetch="select",如:
fetch="select",另外傳送一條select語句抓取當前物件關聯實體或集合
2、fetch="join"
fetch="join",hibernate會通過select語句使用外連線來載入其關聯實體或集合,
此時lazy會失效
二、集合**的批量抓取
classes classes = (classes)session.load(classes.class, 1);
system.out.println("classes.name=" + classes.getname());
for (iterator iter=classes.getstudents().iterator(); iter.hasnext();)
1、保持預設,同fetch="select"
fetch="select",另外傳送一條select語句抓取當前物件關聯實體或集合
2、設定fetch="join"
如:fetch="join",hibernate會通過select語句使用外連線來載入其關聯實體或集合,
此時lazy會失效
3、設定fetch="subselect",如:
fetch="subselect",另外傳送一條select語句抓取在前面查詢到的所有實體物件的關聯集合
list classeslist = session.createquery("select c from classes c where c.id in(1, 2, 3)").list();
for (iterator iter=classeslist.iterator(); iter.hasnext();)
}
三、batch-szie
1、batch-size在上的應用
batch-size屬性,可以批量載入實體類
list students = session.createquery("select s from student s where s.id in(:ids)")
.setparameterlist("ids", new object)
.list();
for (iterator iter=students.iterator(); iter.hasnext();)
2、batch-szie在集合上的應用
batch-size屬性,可以批量載入實體類
list classeslist = session.createquery("select c from classes c").list();
for (iterator iter=classeslist.iterator(); iter.hasnext();)
}
hibernate 抓取策略
1.單端 對端是one,即many2one 1.1 在用many2one時,fetch可以採取select或者join.用select時,會另發一條語句載入關聯物件。用join時,用一條語句就查上來,相當於資料庫裡面的連線,內連線外連線取決於外來鍵是否允許為空。注意 這個規則僅適用於get或者loa...
Hibernate抓取策略
抓取策略指的是我們在獲取資料時,告訴hibernate以何種sql的方式去獲取,hibernate有三種抓取方式可供選擇,分別是select join subselect 該屬性只能在集合標籤和關聯關係標籤上使用。xml version 1.0 encoding utf 8 cn.hibernate...
Hibernate 抓取策略Fetch
lazy與fetch 如果fetch為 join lazy不論設定成什麼樣的值,都不起作用 如果fetch為 select 先載入classes,再載入student,而lazy決定在什麼時候載入studentpublic class fetchtest extends hibernateutil ...