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 등의 파일로 지원합니다.
- src/main/resources -> application.properties 파일 생성
- spring.jpa.show_sql = true 작성
로그에서 쿼리들을 확인할 수 있습니다. 위 문법의 경우 H2 쿼리 문법이며, 만약 MySQL 쿼리로 수정하고 싶다면 아래와 같이 작성합니다.
'Development > Spring Framework' 카테고리의 다른 글
[에러 기록] Request method 'XXX' not supported (0) | 2021.05.07 |
---|---|
[Spring Boot] API 생성하기 (0) | 2021.05.06 |
스프링 부트에서 JPA 사용하기 (2) (0) | 2021.05.03 |
스프링 부트에서 JPA 사용하기 (1) (0) | 2021.05.03 |
스프링 부트 롬복 추가하기 (0) | 2021.05.02 |