본문 바로가기

공부141

[스프링 데이터 JPA] 파라미터 바인딩 종류와 컬렉션 파라미터 바인딩 파라미터 바인딩에는 두 가지 종류가 있다. 위치 기반 이름 기반 하지만, 위치기반의 경우 순서실수가 바뀔 위험이 있다. 코드 가독성과 유지보수를 위해 이름기반 파라미터 바인딩을 사용하자! 예시 @Query에 적용해보자 public interface MemberRepository extends JpaRepository { @Query("select m from Member m where m.username = :name") Member findMembers(@Param("name") String username); } 컬렉션 파라미터 바인딩을 알아보자 Collection타입으로 in절을 지원한다. @Query("select m from Member m where m.username in :names") L.. 2022. 8. 25.
@Query를 통해 DTO로 조회해보자 먼저 예시를 살펴보자 select이후 new 명령어를 사용한다. 생성자가 맞는 DTO가 필요하다. 위의 예시일 때 DTO는 다음과 같다. public class MemberDto { private Long id; private String username; private String teamName; public MemberDto(Long id, String username, String teamName) { this.id = id; this.username = username; this.teamName = teamName; } } 만약 Enum을 통해 비교한다면 어떻게 사용해야 할까? @Query(value = "select distinct new com.woowacourse.naepyeon.servi.. 2022. 8. 25.
스프링 데이터 JPA에서 쿼리 메소드 기능을 알아보자 쿼리 메소드의 3가지 기능 쿼리 메소드는 3가지 기능을 제공한다. 다음과 같다. 메소드 이름으로 쿼리 생성 (중요) 메소드 이름으로 JPA NamedQuery 호출 (실무에서 자주 사용되지 않음) @Query 어노테이션을 사용해서 레포지토리 인터페이스에 쿼리 직접 정의 (중요) 하나씩 살펴보자. 1. 메소드 이름으로 쿼리 생성 이름과 나이를 통해 회원을 조회한다면? 1-1. 순수 JPA 레포지토리 1-2. 스프링 데이터 JPA public interface MemberRepository extends JpaRepository { List findByUsernameAndAgeGreaterThan(String username, int age); } 애플리케이션 로딩시점에 오류를 발견할 수 있다! → 매우 큰.. 2022. 8. 25.
순수 JPA 기반 리포지토리와 차이점을 확인해보자 순수 JPA 기반 리포지토리를 먼저 알아보자 EntityManager를 통해 persist와 JPQL 등을 사용한다. 스프링 데이터 JPA를 사용하면 어떻게 될까? 인터페이스이며 구현체가 없다 구현 클래스(Member)를 보고 proxy 클래스를 만든다. 스프링 데이터 JPA가 구현클래스를 만들어준다. @Repository 애노테이션을 붙이지 않아도 된다. public interface MemberRepository extends JpaRepository { // 타입, PK } 만약 스프링데이터 JPA에서 제공되지 않는 함수를 작성한면? username으로 찾은 List를 찾고싶다면 어떻게 될까? 다음과 같은 예시는 실제로 JPA에서 제공이된다. 이를 쿼리메소드 기능 이라고 한다. public inte.. 2022. 8. 25.
restdocs를 사용해보자 RestDocs이란? Spring REST Docs helps you to document RESTful services. It combines hand-written documentation written with Asciidoctor and auto-generated snippets produced with Spring MVC Test. This approach frees you from the limitations of the documentation produced by tools like Swagger. It helps you to produce documentation that is accurate, concise, and well-structured. This documentation the.. 2022. 7. 29.
Flyway를 사용하는 이유 Flyway Flyway는 DB의 형상관리를 목적으로 하는 툴이다. 1. DB Migration 필요한 것일까? 현재 우리는 배포 후 데이터를 관리해본 경험이 없다. 유지 보수 중 스키마 구조가 바뀌는 상황에 어떻게 대처할 것인가? 예제로 알아보자 현재 유지보수 중인 테이블 (SampleEntity)이 다음과 같다고 가정하자! @Entity public class SampleEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; } 헌데, 새로운 요구사항이 추가되었다. age 필드를 추가해야한다. 그렇다면, Entity에서는 단순히 private Integer age를 추가하면.. 2022. 7. 29.