Search
Duplicate

[실전! 스프링 데이터 JPA] 프로젝트 환경설정

날짜
2022/05/02 06:27
상태
실전! 스프링 데이터 JPA
속성 1
Spring
JAVA
JPA
담당자
목차

Gradle 전체 설정

사용 기능: web, jpa, h2, lombok
SpringBootVersion: 2.6.7
groupId: study
artifactId: data-jpa
plugins { id 'org.springframework.boot' version '2.6.7' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java' } group = 'study' version = '0.0.1-SNAPSHOT' sourceCompatibility = '11' configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.7' } tasks.named('test') { useJUnitPlatform() }
Java
복사
동작 확인
기본 테스트 케이스 실행
스프링 부트 메인 실행 후 에러페이지로 간단하게 동작 확인
테스트 컨트롤러를 만들어서 spring web 동작 확인

테스트 컨트롤러

package study.datajpa.Controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HelloController { @RequestMapping("/hello") public String hello() { return "hello"; } }
Java
복사
참고: 최근 Intellij 버전은 Gradle로 시행을 하는 것이 기본 설정이다. 이렇게 하면 실행 속도가 느리다. 다음과 같이 변경하면 자바로 바로 실행하므로 좀 더 빨라진다.
Preferences → Build, Execution, Deployment → Build Tools → Gradle
Build and run using: Gradle →IntelliJ IDEA
Run tests using: Gradle →IntelliJ IDEA
롬복 적용
1.
Preferences → plugin →lombok 검색 실행(재시작)
2.
Preferences → Annotation Processors 검색 → Enable annottion processing 체크
3.
임의의 테스트를 클래스를 만들고 @Getter, @Setter 확인

라이브러리 살펴보기

gradle 의존관계 보기
./gradlew dependencies --configuration compileClasspath
스프링 부트 라이브러리 살펴보기
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 커넥션 풀
hibernate + JPA: 하이버네이트 + JPA
spring-data-jpa: 스프링 데이터 JPA
spring-boot-start(공통): 스프링 부트 + 스프링 코어 + 로깅
spring-boot
spring-core
spring-boot-starter-logging
logback, slf4j
테스트 라이브러리
spring-boot-stater-test
junit: 테스트프레임워크, 스프링 부터 2.2부터 junit5(jupiter)사용
과거 버전은 vintage
mockito: 목 라이브러리
assertj: 테스트 코드를 좀 더 편하게 작성하게 도와주는 라이브러리
spring-test: 스프링 통합 테스트 지원
핵심 라이브러리
스프링 MVC
스프링 ORM
JPA, 하이버네이트
스프링 데이터 JPA
기타 라이브러리
H2 데이터 베이스 클라이언트
커넥션 풀: 부트 기본은 HikariCp
로깅 SLF4J&LogBack
테스트
H2 데이터베이스 설치
개발이나 테스트 용도로 가볍고 편리한 DB, 웹 화면 제공
다운로드 및 설치
h2 데이터베이스 버전은 스프링 부트 버전에 맞춘다.
권데이터베이스 파일 생성 방법
jdbc:h2:~/datajpa (최소 한번)
~/datajpa.mv.db 파일 생성 확인
이후 부터는 jdbc:h2:tcp://localhost/~/datajpa 이렇게 접속

스프링 데이터 JPA와 DB설정, 동작확인

application.yaml
spring: datasource: url: jdbc:h2:tcp://localhost/~/jpashop username: sa password : 1 driver-class-name: org.h2.Driver jpa: hibernate: ddl-auto: create properties: hibernate: # show_sql: true format_sql: true # default_batch_fetch_size : 1000 logging: level: org.hibernate.SQL: debug # org.hibernate.type: trace
Java
복사
spring.jpa.hibernate.ddl-auto: create
이 옵션은 애플리케이션 실행 시점에 테이블을 drop 하고, 다시 생성한다.
참고: 모든 로그 출력은 가급적 로거를 통해 남겨야 한다.
show_sql: 옵션은 System.out에 하이버네이트 실행 SQL을 남긴다.
org.hibernate.SQL: 옵션은 logger를 통해 하이버네이트 실행 SQL을 남긴다.

실제 동작하는지 확인하기

회원 엔티티
Code
회원 JPA 리포지토리
Code
JPA 기반 테스트
Code
스프링 데이터 JPA 리포지토리
Code
스프링 데이터 JPA 기반 테스트
Code
Entity, Repository 동작 확인
jar 빌드해서 동작 확인
참고 : 스프링 부트를 통해 복잡한 설정이 다 자동화 되었다. persistence.xml 도 없고, LocalContainerEntityManagerFactoryBean 도 없다. 스프링 부트를 통한 추가 설정은 스프링 부트 메뉴얼을 참고하자

쿼리 파라미터 로그 남기기

로그에 다음을 추가하기 org.hibernate.type: SQL 실행 파라미터를 로그로 남긴다.
스프링 부트를 사용하면 라이버러리만 추가하면 된다.