목차
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 실행 파라미터를 로그로 남긴다.
•
외부라이버러리 사용
•
스프링 부트를 사용하면 라이버러리만 추가하면 된다.