JPA76 Data JPA 08 @EntityGraph @EntityGraph 연관된 엔티티들을 SQL한번에 조회하는 방법 현재 Member와 Team엔티티는 다대일 연관관계를 가지고 있는데, fetch=FetchType.LAZY로 되어 있어 지연 로딩 전략을 하고있다. Member엔티티 @Entity public class Member { @Id @GeneratedValue @Column(name="member_id") private Long id; private String username; private int age; @ToString.Exclude//연관관계 필드는 toString을 안하는 것이 좋다. @JoinColumn(name="team_id") @ManyToOne(fetch=FetchType.LAZY) private Team team; /* .. 2022. 1. 7. Data JPA 07 벌크성 수정 쿼리 벌크성 수정 쿼리 이러한 요구사항이 있다. "모든 멤버의 나이를 1씩 증가하라" 한명의 멤버에 대해 나이를 수정하기 위해서는 더티 체킹을 사용하면 되지만 이렇게 다수의 엔티티를 수정하는 것을 벌크성 수정이라 한다. 순수 JPA를 사용하면 아래와 같이 할 수 있다. import org.springframework.stereotype.Repository; import study.datajpa.entity.Member; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import java.util.List; import java.util.Optional; @Repository public class Memb.. 2022. 1. 7. Data JPA 06 쿼리 메서드 - 반환타입, 페이징 반환 타입 조회시 다양한 반환타입을 원할 수 있다. 만약 특정 회원의 username으로 조회시 username이 고유하다면 하나의 회원만 조회하고 싶을 것이고, 고유하지 않다면 List로 받고 싶을 수도 있다. 이럴 때는 아래와 같이 메서드 반환타입에 원하는 반환타입을 적어주면 data jpa가 알아서 잘 쿼리를 날려준다. 아래의 Repository를 보자. import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import study.datajpa.en.. 2022. 1. 6. Data JPA 05 쿼리 메서드 - Query, 리포지토리 메서드에 쿼리 정의하기 @Query를 사용하면 data jpa 리포지토리에서 아래와 같이 쿼리를 직접 정의할 수 있다. username과 age로 Member를 조회하는 메서드를 작성해보자. import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import study.datajpa.entity.Member; import java.util.List; public interface MemberRepository extends JpaRepository { @Query("select .. 2022. 1. 5. 이전 1 ··· 4 5 6 7 8 9 10 ··· 19 다음