본문 바로가기

Development/Spring Framework

스프링 부트에서 JPA 사용하기 (3)

sky-abraxas.tistory.com/61

 

스프링 부트에서 JPA 사용하기 (2)

sky-abraxas.tistory.com/60 스프링 부트에서 JPA 사용하기 (1) ORM : Object Relational Mapping JPA를 이해하기전 알고 가야할 것은 ORM이라는 개념입니다. 객체가 테이블이 되도록 매핑 시켜주는 프레임워크 객..

sky-abraxas.tistory.com

 

JPA Repository 

 

1. DB와 접근하기 위한 인터페이스를 생성합니다.

 

 

  • JpaRepository를 상속받습니다.

  • ibatis 혹은 MyBatis 등에서는 DAO(Database Access Object)라고 불리우는 DB Layer 접근자를 사용합니다. 하지만 JPA에서는 이 DAO를 Repository라고 부르며, 인터페이스로 생성합니다.

  • ~~ extends JpaRepository<Entity 클래스, PK 타입>
    위와 같이 상속하면 기본적인 CRUD 메소드가 자동으로 생성됩니다.

  • @Repository를 추가할 필요 없이 주의할 사항은 Entity클래스와 Entity Repository는 함께 위치해야 한다는 것입니다.

  • 프로젝트 규모가 커져 도메인별로 프로젝트를 분리해야할 경우, Entity 클래스와 기본 Repository는 함꼐 움직여야 하기에, 도메인 패키지에서 함께 관리합니다.

 

2. Spring DATA JPA 테스트 코드 작성

 

 

  • test 디렉토리에서 동일한 패키지 경로를 생성해 '[Repository명]Test' 클래스를 생성합니다.

  • assertThat

    - 테스트 검증 라이브러리 메소드
    - 메소드 체이닝 가능
    - 검증할 인자를 매개변수로 받음

  • save 메소드

    - 테이블 posts에 insert 혹은 update 쿼리 실행

    - id 값이 존재한다면 update, 없다면 insert 수행

  • findAll 메소드

    - 테이블에 존재하는 모든 데이터를 조회함

  • 별다른 설정 없이 @SpringBootTest를 사용할 경우 H2 DB를 자동으로 실행함

  • 실행시 위와 같이 초록색 체크표시가 나타난다면 테스트 성공

로그로 실행된 쿼리 보기

로그를 보기 위한 설정을 해야합니다. 스프링 부트에서는 이를 application.properties 혹은 application.yml 등의 파일로 지원합니다. 

 

 

  1. src/main/resources -> application.properties 파일 생성

  2. spring.jpa.show_sql = true 작성 

로그에서 쿼리들을 확인할 수 있습니다. 위 문법의 경우 H2 쿼리 문법이며, 만약 MySQL 쿼리로 수정하고 싶다면 아래와 같이 작성합니다.