개발/JPA

    JPA에서 지연로딩(LAZY LOADING)이란

    JPA 공부를 하다가 아래와 같은 오류를 만났다. org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.study.chapter05.entity.Ch05Team.memberList, could not initialize proxy - no Session 팀과 회원 객체의 양방향 연관관계 테스트를 하다가 만난 오류인데 팀을 조회할때 팀에 소속된 회원 리스트까지 함께 조회를 하는 과정에서 발생하였다. // 팀 엔티티 @Entity @Getter @Setter @NoArgsConstructor @AllArgsConstructor @Table(name = "Ch05_TEAM") public c..

    JPA에서 save할때 select 쿼리가 먼저 실행되는 이유

    스프링 데이터 JPA의 JpaRepository로 save를 해보다가 이상한 점을 발견했다. MEMBER 테이블에 회원 객체를 저장하는 테스트 코드를 작성했다. @Test @DisplayName("회원 객체 등록 테스트") void insertMemberTest() { // given Member member = Member.builder().id("id1").username("초원").age(26).build(); // when Member saveMember = memberRepository.save(member); // then assertEquals(saveMember.getUsername(), "초원"); } 쿼리 로그를 출력해보니 insert 쿼리 전에 select 쿼리가 선실행되고 있었다. ..