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);
    }
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章