Spring (183) 썸네일형 리스트형 [Spring Data JPA] @EntityGraph 이번 장에서는 @EntityGraph 어노테이션에 대해서 알아본다. 글의 하단부에 참고한 강의와 공식문서의 경로를 첨부하였으므로 자세한 사항은 강의나 공식문서에서 확인한다. 모든 코드는 깃허브 (링크)에 있다. 우리는 지금까지 모든 연관관계를 Lazy로 설정하였다. 이번에는 이렇게 Lazy로 설정되어있는 Entity까지 한 번에 조회하기 위해 순수 JPA의 경우 명시적으로 Fetch Join을 사용하고 Data JPA의 경우 @EntityGraph를 통해 Fetch Join을 사용해본다. 조회 대상 Entity인 SoccerPlayer 클래스는 아래와 같다. @Entity @NamedQueries(value = { @NamedQuery( name = "SoccerPlayer.findByName", que.. [Spring Data JPA] Bulk 이번 장에서는 벌크성 쿼리에 대해서 알아본다. 글의 하단부에 참고한 강의와 공식문서의 경로를 첨부하였으므로 자세한 사항은 강의나 공식문서에서 확인한다. 모든 코드는 깃허브 (링크)에 있다. 순수 JPA의 벌크성 쿼리 SoccerPlayerPureRepository @Repository public class SoccerPlayerPureRepository { @PersistenceContext private EntityManager entityManager; public int bulkUpdate(int height) { return entityManager.createQuery( "UPDATE SoccerPlayer SP SET SP.weight = SP.weight + 10 " + "WHERE SP... [Spring Data JPA] Paging 이번 장에서는 NamedQuery에 대해서 알아본다. 글의 하단부에 참고한 강의와 공식문서의 경로를 첨부하였으므로 자세한 사항은 강의나 공식문서에서 확인한다. 모든 코드는 깃허브 (링크)에 있다. 순수 JPA 기반의 Paging SoccerPlayerPureRepository @Repository public class SoccerPlayerPureRepository { @PersistenceContext private EntityManager entityManager; public Page findAllPage(int page, int size) { int offset = size * page; List content = entityManager.createQuery( "SELECT SP " + "FR.. [Spring Data JPA] Parameter binding 이번 장에서는 Parameter 바인딩과 반환 타입에 대해서 알아본다. 글의 하단부에 참고한 강의와 공식문서의 경로를 첨부하였으므로 자세한 사항은 강의나 공식문서에서 확인한다. 모든 코드는 깃허브 (링크)에 있다. 파라미터 바인딩 SoccerPlayerDataRepository 코드를 확인해보면 위치 기반 파라미터 바인딩과 이름 기반 바인딩이 존재한다. public interface SoccerPlayerDataRepository extends JpaRepository { @Query(value = "SELECT SP " + "FROM SoccerPlayer SP " + "WHERE " + " SP.name = ?1 " + " AND SP.height > ?2 ") List findByNameAndHei.. [Spring Data JPA] @Query 이번 장에서는 @Query 어노테이션을 사용한 조회에 대해서 알아본다. 글의 하단부에 참고한 강의와 공식문서의 경로를 첨부하였으므로 자세한 사항은 강의나 공식문서에서 확인한다. 모든 코드는 깃허브 (링크)에 있다. NamedQuery가 Entity에 존재하였다면 @Query를 사용하여 직접 쿼리를 작성하는 방식은 @NamedQuery의 내용이 @Query 어노테이션 안으로 들어온 방식이다. SoccerPlayer가 가지는 속성은 아래와 같으며 Entity가 아닌 DTO로 조회하기위해 ResponseDTO를 추가하였다. SoccerPlayer @Entity @NamedQueries(value = { @NamedQuery( name = "SoccerPlayer.findByName", query = "SELE.. [Spring Data JPA] Named Query 이번 장에서는 NamedQuery에 대해서 알아본다. 글의 하단부에 참고한 강의와 공식문서의 경로를 첨부하였으므로 자세한 사항은 강의나 공식문서에서 확인한다. 모든 코드는 깃허브 (링크)에 있다. SoccerPlayer가 가지는 속성은 아래와 같으며 @NamedQuery 어노테이션으로 Named Query를 적용할 수 있다. @Entity @NamedQueries(value = { @NamedQuery( name = "SoccerPlayer.findByName", query = "SELECT SP FROM SoccerPlayer SP WHERE SP.name = :name"), @NamedQuery( name = "SoccerPlayer.findByHeightGreaterThan", query = "SE.. [Spring Data JPA] Method name query 이번 장에서는 메소드 이름 쿼리에 대해서 알아본다. 글의 하단부에 참고한 강의와 공식문서의 경로를 첨부하였으므로 자세한 사항은 강의나 공식문서에서 확인한다. 모든 코드는 깃허브 (링크)에 있다. SoccerPlayer가 가지는 속성은 아래와 같다. @Entity @Getter @Setter @ToString(of = {"id", "name", "height", "weight"}) @NoArgsConstructor(access = PROTECTED) public class SoccerPlayer { @Id @GeneratedValue @Column(name = "soccer_player_id") private Long id; private String name; private int height; priv.. [Spring Data JPA] Structure 이번 장에서는 Spring Data API 개요 (링크)에 이어 Spring Data JPA가 어떠한 방식으로 작동하는지 알아보도록 한다. 글의 하단부에 참고한 강의와 공식문서의 경로를 첨부하였으므로 자세한 사항은 강의나 공식문서에서 확인한다. 우리는 이전 장에서 아래처럼 리포지토리 인터페이스를 만드는 것 만으로 기본적인 CRUD가 작동하는 것을 확인하였다. SoccerPlayerDataRepository public interface SoccerPlayerDataRepository extends JpaRepository {} TeamDataRepository public interface TeamDataRepository extends JpaRepository {} 당연히 인터페이스만으로 동작하는 서비.. 이전 1 ··· 17 18 19 20 21 22 23 다음