πŸŒ€ INTRO

JPA μΏΌλ¦¬λ©”μ†Œλ“œλ‘œ 쿼리 날릴 λ•Œ μ˜ˆμƒκ³Ό λ‹€λ₯Έ λ™μž‘μ„ λ°œκ²¬ν–ˆλŠ”λ°,

쿼리 날릴 λ•Œ λ„£λŠ” 쑰건(νŒŒλΌλ―Έν„°)이 μ—”ν‹°ν‹°κ°€ μ•„λ‹ˆλΌ ν•„λ“œκ°’μΌ 경우 λ‚˜νƒ€λ‚˜λŠ” λ™μž‘μž„μ„ ν™•μΈν–ˆλ‹€.


πŸŒ€ JPA 쿼리 λ©”μ†Œλ“œ μ‚¬μš© μ‹œ WHERE μ ˆμ— μ—”ν‹°ν‹°λ₯Ό?


πŸ’£ μ‹€ν—˜ν•΄λ³΄μž

Member-Post : MemberΒ λŠ” μ—¬λŸ¬ 개의 PostΒ λ₯Ό μž‘μ„±ν•  수 μžˆμœΌλ―€λ‘œ 1:N 관계

Member.class

@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<>();
}

Post.class

@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;
}

PostRepository.class

public interface PostRepository extends JpaRepository<Post, Long> {
    List<Post> findAllByMember(Member member); 
    List<Post> findAllByMemberId(Long memberId);
}

where μ ˆμ— μ—”ν‹°ν‹°λ₯Ό λ„£μ—ˆμ„ λ•Œμ™€ ν•„λ“œ 값을 λ„£μ—ˆμ„ λ•Œ 두 κ°€μ§€ λ²„μ „μ˜ λ©”μ†Œλ“œ μ€€λΉ„