JPA级联查询----导航查询
导航查询
查询一个对象时的同时,通过此对象查询它的关联对象
案例 客户和联系人
//从客户对象到联系人导航查询他所属的客户
//默认使用延迟加载
@Test @Transactional //解决代码中no Session public void testQuery(){ Customer customer=customerDao.getOne(1L); Set<LinkMan> linkMans=customer.getLinkMans(); for (LinkMan linkMan : linkMans) { System.out.println(linkMan); }
存在问题 导航查询时 默认使用延迟加载的形式查询,调用get方法时不会立即发送查询,而是在使用关联对象的时候才会查询----延迟加载
解决办法 修改配置,将延迟加载改为立即加载
上面是一对多的形式
接下来 多对一的形式
//从联系人对象导航查询他所属的客户 //默认使用立即加载 @Test @Transactional //解决代码中no Session public void testQuery02(){ LinkMan linkMan=linkManDao.findOne(1l); Customer customer=linkMan.getCustomer(); System.out.println(customer); }
修改加载方式
总结
从一方查询多方
默认 延迟加载(一般都是)
从多方查询一方
默认 立即加载
一到多 意味着 多方可能有很多数据,如果立即加载又用不上 浪费 大概是这个意思