본 게시글은 하단 강의를 듣고 학습한 내용을 제 생각으로 요약, 정리한 글입니다.
1. 프로젝트 생성
- 스프링 부트 스타터(https://start.spring.io/)
- groupId: jpabook
- artifactId: jpashop
- 사용 기능: web, thymeleaf, jpa, h2, lombok, validation
- 자바 버전: 11
- 스프링 부트 버전: 2.7.5
- lombok 적용 및 확인
- Settings → plugin → lombok 검색해 설치
- Settings → Annotation Processors 검색 → Enable annotation processing 체크 (재시작)
- 임의의 테스트 클래스를 만들고 @Getter, @Setter 확인
- IntelliJ Gradle 대신에 자바 직접 실행
- 최근 IntelliJ 버전은 Gradle로 실행을 하는 것이 기본 설정이다. 이렇게 하면 실행속도가 느리다. 다음과 같이 변경하면 자바로 바로 실행해서 실행속도가 더 빠름
Settings → Gradle 검색
- Settings → Build, Execution, Deployment → Build Tools → Gradle
- Build and run using: Gradle → IntelliJ IDEA
- Run tests using: Gradle → IntelliJ IDEA
2. 라이브러리
- gradle 의존관계 보기
- 터미널로 jpashop 폴더에 들어가서 아래 코드 입력
./gradlew dependencies- 혹은
./gradlew dependencies —configuration compileClasspath
- 혹은 intelliJ에서 우측 상단 Gradle 클릭
- jpashop/Source Sets/main/Dependencies
- 스프링 부트 라이브러리
- spring-boot-starter-web
- spring-boot-starter-tomcat: 톰캣 (웹서버)
- spring-webmvc: 스프링 웹 MVC
- spring-boot-starter-thymeleaf: 타임리프 템플릿 엔진(View)
- 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-boot-starter-logging
- spring-boot-starter-test
- junit: 테스트 프레임워크
- mockito: 목 라이브러리
- assertj: 테스트 코드를 좀 더 편하게 작성하게 도와주는 라이브러리
- spring-test: 스프링 통합 테스트 지원
3. View 환경 설정
- thymeleaf
- 장점)
- Natural templates: 마크업 깨지 않고 그대로 씀
- spring과 통합
- 단점)
- thymeleaf 템플릿엔진 동작 확인(hello.html)
src/main/java/jpabook.jpashop/HelloController
src/main/resources/templates/hello.html
- 렌더링 없는 정적 페이지 만들기(index.html)
src/main/resources/static/index.html
- 서버 재시작 없이 View 파일 변경
- build.gradle에 아래 코드 추가
implementation 'org.springframework.boot:spring-boot-devtools'
- View 파일 수정 후 [메뉴: build → Recompile] 후 페이지 새로고침
4. H2 데이터베이스 설치
1) H2 설치
2) H2 실행
- 앱 실행
- JDBC URL이
jdbc:h2:~/jpashop인 상태로 연결 버튼 누르기(최초 한 번) 스프링 입문에서 났던 바보 같은,, 에러
- 에러)
jdbc:h2:~/test 하고 연결 눌렀더니 test가 없다고 에러남.
- 해결) test 수동으로 만들어주기
C:\Users\choo0에 txt파일 만든 후 다른 이름으로 저장하기 해서 test2.mv.db 로 이름 바꾼 후 모든 파일 형식으로 저장하기- JDBC URL을
jdbc:h2:~/test2로 바꾼 후 연결 버튼 누르기 (최초 한 번). - 근데 난 파일을 수동으로 생성한 거라 최초 한 번 이걸로 할 필요도 없이 바로 다음걸로 해도 됐을 듯
- 이후부턴 JDBC URL을
jdbc:h2:tcp://localhost/~/test2로 해서 연결 버튼 누르기
이번엔 에러 발생 안 함 → 저장한 설정을 Embedded가 아니라 Server로 바꿔줬음
C:\Users\choo0에 ~/jpashop.mv.db 파일 생성 확인
- 이후부턴 JDBC URL을
jdbc:h2:tcp://localhost/~/jpashop로 해서 연결 버튼 누르기
5. JPA와 DB 설정, 동작 확인
- 설정 파일로 properties와 yml 둘 중 하나 선택
- src/main/resources/application.properties 삭제
- src/main/resources/application.yml 생성
- yml 파일 → 설정
src/main/resources/application.yml
- H2 데이터베이스의 MVCC 옵션은 H2 1.4.198 버전부터 제거됨.
- 1.4.200 버전에서는 MVCC 옵션을 사용하면 오류가 발생함
- 공식문서 → yml 파일 설정 나와있음
- 회원 엔티티
main/java/jpabook/jpashop/Member.java
- 회원 리포지토리
main/java/jpabook/jpashop/MemberRepository.javaㅇ
- 회원 리포지토리 테스트
테스트 파일 생성
test/java/jpabook/jpashop/MemberRepositoryTest.java