Spring Data JPA对象导航视图

Spring Data JPA对象导航视图

  1. 对象导航查询:

    查询一个对象的同时,通过此对象查询他的关联对象

    以前文的一对多关系为例

    RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(locations = "classpath:applicationContext.xml")
    public class ObjectQueryTest {
    
    @Resource
    private CustomerDao customerDao;
    @Resource
    private LinkManDao linkManDao;
    /*
    * 测试对象导航查询(查询一个对象的时候,查询该对象的所有关联对象)
    * */
    @Test
    @Transactional
    public void test(){
    //查询id为1的客户
    Customer customer = customerDao.getOne(1);
    Set<LinkMan> linkMans = customer.getLinkMans();
    for (LinkMan linkMan : linkMans) {
    System.out.println(linkMan);
    }
    }
    
    }
    

    注意:

    从一的一方查询多的一方

    /*
         * 对象导航查询,从一的一方查询多的一方,默认使用延迟加载的形式查询
         *      调用findOne方法不会立即查询关联对象,而是在get关联对象时才会查询
         * */
    @Test
    @Transactional
    public void test2(){
        //查询id为1的客户
        Customer customer = customerDao.findOne(1);  //立即加载
        Set<LinkMan> linkMans = customer.getLinkMans();
        System.out.println(linkMans.size());
    }
    
    

    ​ 配置加载方式

    @OneToMany(mappedBy = "customer",cascade = CascadeType.ALL,fetch = FetchType.LAZY)   //EAGER:立即加载  LAZY  延迟加载
    private Set<LinkMan> linkMans = new HashSet<LinkMan>();
    

    从多的一方查询一的一方

    /*
         * 从多的一方查询一的一方,默认使用立即加载(即查询多的方时也查询一的一方)
         * */
    @Test
    @Transactional
    public void test3(){
        LinkMan one = linkManDao.findOne(2);
        //对象导航查询
        Customer customer = one.getCustomer();
        System.out.println(customer);
    }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值