JPA 메서드의 where 조건에는 Entity 를 사용하자

이진규·2023년 3월 29일
0

SPRING 지식 공유

목록 보기
3/17

JPA 메서드의 where 조건에는 Entity 를 사용하자

@Entity
public class Member {

    @Id @GeneratedValue
    @Column(name = "member_id")
    private Long id;

    @Column
    private String email;

    @OneToMany(mappedBy = "member")
    private List<Post> posts = new ArrayList<>();
}


@Entity
public class Post {

    @Id @GeneratedValue
    @Column(name = "post_id")
    private Long id;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "member_id")
    private Member member;

    @Column
    private String content;
}

다음과 같은 엔티티가 있을때 Member와 Post는 1:N 관계 입니다.
이때 Post 테이블에서 post.member_id 를 기준으로 일치하는 데이터들을 가져오는 메서드를 작성합니다.

가능한 메서드는 두 종류가 있습니다.

Member 라는 엔티티를 조건으로 검색하는 findAllByMember
memberId 라는 필드값을 조건으로 검색하는 findAllByMemberId

결론부터 말하자면 1 번 메서드를 사용해야 합니다.

이유는 필드값을 조건으로 검색할 때는 조인 쿼리가 추가적으로 날라가게 되고, 엔티티를 조건을 검색할 때는 조인 쿼리가 날라가지 않기 때문에 성능상 유리하게 됩니다.

참고자료

where조건절에 엔티티 이용 관련 내용

profile
항상 궁금해하고 공부하고 기록하자.

0개의 댓글