📗

[스프링부트와 JPA 활용1] 1. 프로젝트 환경 설정

작성일자
Nov 9, 2022
태그
SUB PAGE
프로젝트
JPA 활용1
책 종류
본 게시글은 하단 강의를 듣고 학습한 내용을 제 생각으로 요약, 정리한 글입니다.

1. 프로젝트 생성

  • 스프링 부트 스타터(https://start.spring.io/)
    • groupId: jpabook
    • artifactId: jpashop
    • 사용 기능: web, thymeleaf, jpa, h2, lombok, validation
    • 자바 버전: 11
    • 스프링 부트 버전: 2.7.5
  • Junit 4 적용
    • build.gradle
  • lombok 적용 및 확인
    • Settings → plugin → lombok 검색해 설치
      • 이미 설치되어 있었음
        notion image
    • Settings → Annotation Processors 검색 → Enable annotation processing 체크 (재시작)
    • 임의의 테스트 클래스를 만들고 @Getter, @Setter 확인
  • IntelliJ Gradle 대신에 자바 직접 실행
    • 최근 IntelliJ 버전은 Gradle로 실행을 하는 것이 기본 설정이다. 이렇게 하면 실행속도가 느리다. 다음과 같이 변경하면 자바로 바로 실행해서 실행속도가 더 빠름
    • Settings → Gradle 검색
      • Settings → Build, Execution, Deployment → Build Tools → Gradle
      notion image
    • 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-core
      • spring-boot-starter-logging
        • logback, slf4j
    • spring-boot-starter-test
      • junit: 테스트 프레임워크
      • mockito: 목 라이브러리
      • assertj: 테스트 코드를 좀 더 편하게 작성하게 도와주는 라이브러리
      • spring-test: 스프링 통합 테스트 지원
 

3. View 환경 설정

  • thymeleaf
    • 장점)
      • Natural templates: 마크업 깨지 않고 그대로 씀
      • spring과 통합
    • 단점)
      • 닫는 태그 정확히 매칭 안하면 에러 발생
        • 단, 3.0부턴 에러 발생 안 함
  • 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 설치

  • 1.4.200 버전으로 설치

2) H2 실행

  1. 앱 실행
      • H2 Console 아이콘 클릭해 실행
      • 혹은 cmd로 실행
        • cd C:\Program Files (x86)\H2\bin
          h2.bat
  1. JDBC URL이 jdbc:h2:~/jpashop인 상태로 연결 버튼 누르기(최초 한 번)
      • DB 파일 생성할 경로 지정하는 것임
      스프링 입문에서 났던 바보 같은,, 에러
      • 에러) jdbc:h2:~/test 하고 연결 눌렀더니 test가 없다고 에러남.
      • 해결) test 수동으로 만들어주기
        • C:\Users\choo0에 txt파일 만든 후 다른 이름으로 저장하기 해서 test2.mv.db 로 이름 바꾼 후 모든 파일 형식으로 저장하기
        • JDBC URL을 jdbc:h2:~/test2로 바꾼 후 연결 버튼 누르기 (최초 한 번).
          • 근데 난 파일을 수동으로 생성한 거라 최초 한 번 이걸로 할 필요도 없이 바로 다음걸로 해도 됐을 듯
          • notion image
        • 이후부턴 JDBC URL을 jdbc:h2:tcp://localhost/~/test2로 해서 연결 버튼 누르기
      이번엔 에러 발생 안 함 → 저장한 설정을 Embedded가 아니라 Server로 바꿔줬음
      notion image
      notion image
      • C:\Users\choo0~/jpashop.mv.db 파일 생성 확인
  1. 이후부턴 JDBC URL을 jdbc:h2:tcp://localhost/~/jpashop로 해서 연결 버튼 누르기
      • 네트워크 모드로 접근
 

5. JPA와 DB 설정, 동작 확인

  • 설정 파일로 properties와 yml 둘 중 하나 선택
    • src/main/resources/application.properties 삭제
    • src/main/resources/application.yml 생성
  • 회원 엔티티
    • main/java/jpabook/jpashop/Member.java
  • 회원 리포지토리
    • main/java/jpabook/jpashop/MemberRepository.javaㅇ
  • 회원 리포지토리 테스트
    • 테스트 파일 생성
      notion image
      • JUnit4로 변경해 생성
      test/java/jpabook/jpashop/MemberRepositoryTest.java
[스프링부트와 JPA 활용1] 1. 프로젝트 환경 설정