类级别懒加载:
//类级别懒加载 //load方法 //class lazy属性 //默认值:true load获得时,会返回代理对象,不查询数据库,使用时才查询 public void fun1() { Session session = HibernateUtils.openSession(); session.beginTransaction(); //-------------------------------------- Customer load = (Customer) session.load(Customer.class, 17); System.out.println("----------------sql语句未发送"); System.out.println(load.getName()); //-------------------------------------- session.getTransaction().commit(); session.close(); }
lazy :false
//类级别懒加载 //load方法 //class lazy属性 //默认值:false load方法执行就会发送sql语句,和get方法一致 public void fun2() { Session session = HibernateUtils.openSession(); session.beginTransaction(); //-------------------------------------- Customer load = (Customer) session.load(Customer.class, 19); System.out.println("----------------sql语句发送"); System.out.println(load.getName()); //-------------------------------------- session.getTransaction().commit(); session.close(); }
关联级别懒加载的配置以及查询方式:
lazy:false
//关联级别懒加载 //lazy:false public void fun2() { Session session = HibernateUtils.openSession(); session.beginTransaction(); //-------------------------------------- Customer load = (Customer) session.get(Customer.class, 19); System.out.println("所有的--------sql语句发送"); for (Order o : load.getOrders()) { System.out.println(o.getName()); } //-------------------------------------- session.getTransaction().commit(); session.close(); }

fetch:
一次加载多个customer的订单数据
//关联级别懒加载 //lazy:false //fetch :subselect public void fun4() { Session session = HibernateUtils.openSession(); session.beginTransaction(); //-------------------------------------- List<Customer> list = session.createQuery("from com.huhu.domain.Customer").list(); for (Customer c : list) { System.out.println(c.getName() + c.getOrders().size()); } //-------------------------------------- session.getTransaction().commit(); session.close(); }
//关联级别懒加载 //lazy:true //fetch :subselect public void fun5() { Session session = HibernateUtils.openSession(); session.beginTransaction(); //-------------------------------------- List<Customer> list = session.createQuery("from com.huhu.domain.Customer").list(); System.out.println("使用order时才去数据库查询"); for (Customer c : list) { System.out.println(c.getName() + c.getOrders().size()); } //-------------------------------------- session.getTransaction().commit(); session.close(); }

//关联级别懒加载 //lazy:true //fetch :select public void fun6() { Session session = HibernateUtils.openSession(); session.beginTransaction(); //-------------------------------------- System.out.println("customer--------sql语句发送"); Customer load = (Customer) session.get(Customer.class, 17); System.out.println("order--------sql语句发送"); for (Order o : load.getOrders()) { System.out.println(o.getName()); } //-------------------------------------- session.getTransaction().commit(); session.close(); }
//关联级别懒加载 //lazy:false //fetch :select public void fun7() { Session session = HibernateUtils.openSession(); session.beginTransaction(); //-------------------------------------- Customer load = (Customer) session.get(Customer.class, 17); System.out.println("所有的--------sql语句发送"); for (Order o : load.getOrders()) { System.out.println(o.getName()); } //-------------------------------------- session.getTransaction().commit(); session.close(); }
关联级别懒加载:
//关联级别懒加载 //lazy:extra //fetch :select public void fun8() { Session session = HibernateUtils.openSession(); session.beginTransaction(); //-------------------------------------- Customer load = (Customer) session.get(Customer.class, 17); System.out.println("-------查询数量count()------"); System.out.println(load.getOrders().size()); System.out.println("----------查询customer--------"); for (Order o : load.getOrders()) { System.out.println(o.getName()); } //-------------------------------------- session.getTransaction().commit(); session.close(); }

//关联级别懒加载 //lazy:extra //fetch :subselect public void fun9() { Session session = HibernateUtils.openSession(); session.beginTransaction(); //-------------------------------------- List<Customer> list = session.createQuery("from com.huhu.domain.Customer").list(); for (Customer c : list) { System.out.println(c.getName() + "------------" + c.getOrders().size()); } for (Customer cs : list) { for (Order o : cs.getOrders()) { System.out.println(cs.getName() + "------------" + o.getName()); } } //-------------------------------------- session.getTransaction().commit(); session.close(); }
文章来源: Hibernate -- lazy加载