Hibernate延遲加載(lazyload)

hibernate中的延遲加載(lazyload)分屬性的延遲加載和關係的延遲加載 

屬性的延遲加載: 
當使用load的方式來獲取對象的時候,只有訪問了這個對象的屬性,hibernate纔會到數據庫中進行查詢。不然不會訪問數據庫。java

只要訪問一次代理對象的非主屬性時,hibernate就會把整個實體類加載進來,即便關閉了session也能夠訪問實體對象裏面的數據。數據庫

關係的延遲加載session

延遲加載又叫lazyload,在one-many many-many的時候均可以使用關係的延遲加載ui

 1 package com.how2java.test;
 2  
 3 import org.hibernate.Session;
 4 import org.hibernate.SessionFactory;
 5 import org.hibernate.cfg.Configuration;
 6  
 7 import com.ghw.pojo.Category;
 8  
 9 public class TestHibernate {
10     public static void main(String[] args) {
11         SessionFactory sf = new Configuration().configure().buildSessionFactory();
12  
13         Session s = sf.openSession();
14         s.beginTransaction();
15         Category c = (Category) s.get(Category.class, 1);
16  
17         System.out.println("log1");
18         System.out.println(c.getProducts());
19         System.out.println("log1");
20  
21         s.getTransaction().commit();
22         s.close();
23         sf.close();
24     }
25 }

運行結果,從結果能夠看出第15行沒有執行product的查詢,到了18行才進行了product表的查詢。spa

相關文章
相關標籤/搜索