인프런 - 실전! 스프링 데이터 JPA
프로젝트 생성
스프링 부트 스타터 https://start.spring.io/
사용 기능 : web, jpa, h2, lombok
- SpringBootVersion: 2.2.1
- groupId: study
- artifactid: data-jpa
스프링 부트 스타터
bulid.gradle 열기
실행 확인
컨트롤러 생성 후 실행
설정 변경
lombok 설정
라이브러리 살펴보기
인텔리제이 터미널 설정
스프링 부트 라이브러리
* spring-boot-starter-web
- spring-boot-starter-tomcat: 톰캣 (웹서버)
- spring-webmvc: 스프링 웹 MVC
* spring-boot-starter-data-jpa
- spring-boot-starter-aop
- spring-boot-starter-jdbc
- HikariCP 커넥션 풀 (부트 2.0 기본)
- hibernate + JPA: 하이버네이트 + JPA
- spring-data-jpa: 스프링 데이터 JPA
* spring-boot-starter(공통): 스프링 부트 + 스프링 코어 + 로깅
- spring-boot
- spring-core
- spring-boot-starter-logging
- logback, slf4j
테스트 라이브러리
- spring-boot-starter-test
- junit: 테스트 프레임워크, 스프링 부트 2.2부터 junit5( jupiter ) 사용
- 과거 버전은 vintage
- assertj: 테스트 코드를 좀 더 편하게 작성하게 도와주는 라이브러리
- spring-test: 스프링 통합 테스트 지원
핵심 라이브러리
- 스프링 MVC
- 스프링 ORM
- JPA, 하이버네이트
- 스프링 데이터 JPA
기타 라이브러리
- H2 데이터베이스 클라이언트
- 커넥션 풀: 부트 기본은 HikariCP
- 로깅 SLF4J & LogBack
- 테스트
H2 데이터베이스 설치
H2 Database Engine (redirect)
H2 Database Engine Welcome to H2, the free SQL database. The main feature of H2 are: It is free to use for everybody, source code is included Written in Java, but also available as native executable JDBC and (partial) ODBC API Embedded and client/server mo
www.h2database.com
h2 데이터베이스 버전은 스프링 부트 버전에 맞춤
데이터베이스 파일 생성 방법
- jdbc:h2:~/datajpa (최소 한번)
- ~/datajpa.mv.db 파일 생성 확인
- 이후 부터는 jdbc:h2:tcp://localhost/~/datajpa 이렇게 접속
스프링 데이터 JPA와 DB 설정, 동작확인
# main/resources/application.yml (properties 삭제)
spring:
datasource:
url: jdbc:h2:tcp://localhost/~/datajpa
username: sa
password:
driver-class-name: org.h2.Driver
jpa:
hibernate:
ddl-auto: create # 로딩시점에 테이블을 전부 drop 후 재생성, 운영 시 사용 X
properties:
hibernate:
# show_sql: true # jpa 실행 쿼리를 콘솔에 조회
format_sql: true
logging.level:
org.hibernate.SQL: debug # 로그로 남기기
# org.hibernate.type: trace # 파라미터까지 볼 수 있는 옵션
1. Entity 생성
2. JPA Repository 생성
3. 테스트 - JPA Repository
* ctrl + shift + T
* 생성자 추가
* 테스트 시 , 에러 발생
* @Transactional 어노테이션 추가하여 해결
* assertThat(findMember).isEqualTo(member); 테스트시 결과는?
- true : 한 트랜잭션 내에서는 영속성 컨텍스트 보장
4. Spring Data Repository 생성
5. 테스트 - Spring Data Repository
6. 쿼리 파라미터 로그 남기기
* build.gradle / dependencies 에
implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.7' 추가
운영에서는 성능저하로 인해 사용 고려
'Back-end > Spring Data Jpa' 카테고리의 다른 글
쿼리 메소드 기능 - @Query (0) | 2021.06.07 |
---|---|
쿼리 메소드 기능 - JPA NamedQuery (0) | 2021.06.07 |
쿼리 메소드 기능 - 메소드 이름으로 쿼리 생성 (0) | 2021.06.07 |
공통 인터페이스 기능 (0) | 2021.06.01 |
예제 도메인 모델 (0) | 2021.06.01 |