흰 스타렉스에서 내가 내리지

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

Spring

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

주씨. 2022. 8. 2. 14:01
728x90

강의 1. 프로젝트 생성

* 요즘은 템플릿 엔진으로 jsp를 잘 쓰지 않는다. 대신 thymeleaf 사용.

* h2는 개발하거나 테스트할 때 좋다.

IntelliJ에서 다운로드 받은 폴더 open

build.gradle 파일을 통해 라이브러리를 다운받는데, 시간이 굉장히 오래걸릴것이다. 

 

 

 

롬복 적용

1. Prefrences plugin lombok 검색 실행 (재시작)

2. Prefrences Annotation Processors 검색 Enable annotation processing 체크 (재시작)

3. 임의의 테스트 클래스를 만들고 @Getter, @Setter 확인

preferences - plugin 메뉴를 통해 lombok이 설치됐는지 확인

 

Compiler - Annotation Processors 에 첫번째 체크박스 : Enable annotation processing 체크! 꼭

 

 

 

 

++

IntelliJ Gradle 대신에 자바 직접 실행 > 참고: 강의에 이후에 추가된 내용입니다.

최근 IntelliJ 버전은 Gradle로 실행을 하는 것이 기본 설정이다. 이렇게 하면 실행속도가 느리다.

다음과 같이 변경하면 자바로 바로 실행해서 실행속도가 더 빠르다

 

Preferences > Build, Execution, Deployment > Build Tools > Gradle

Build and run using: Gradle > IntelliJ IDEA

Run tests using: Gradle  > IntelliJ IDEA

 


강의2. 라이브러리 살펴보기

 

gradle 의존관계 보기

./gradlew dependencies —configuration compileClasspath

 

 


강의3. View 환경설정

thymeleaf 템플릿 엔진

thymeleaf 공식 사이트: https://www.thymeleaf.org/

스프링 공식 튜토리얼: https://spring.io/guides/gs/serving-web-content/

스프링부트 메뉴얼: https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html/boot-features-developing-web-applications.html#boot-features-spring-mvc-template-engines 

 

 

 

 

HelloController.java

스프링 부트 thymeleaf viewName 매핑

 >> resources:templates/ + {ViewName} + .html

hello.html

8번줄 : 순수하게 html 렌더링을 하면 "안녕하세요. 손님"이 뜨지만, 서버사이드렌더링을 하게 되면 p태그 안에 저 data 변수와 함께 문장이 렌더링된다.

이것이 thymeleaf의 장점이다. 다른 템플릿 엔진이었으면 if 분기처리를 해줬어야 했을 것이다. 

 

 

 

nodeJS에서 nodemon 이랑 같은거 설정하기 

build.gradle 파일에서 devtools implement
그리고 서버를 재실행하면 main 에서 restartedMain으로 바뀜
Build > Recompile 'index.html' 눌러주면, 서버 재실행 필요없이 바로 반영됨

 

 


강의4. H2 데이터베이스 설치

h2 다운로드 > 터미널에서 h2 폴더 내 bin 폴더 들어가기

chmod 로 권한 설정을 해주어야 함

실행하면 웹 브라우저에 h2 콘솔이 뜨는데, 여기서 주소창을 localhost 로 변경

JDBC URL 설정

연결 후, 홈에 jpashop.mv.db 파일 생성 확인 후, 다시 나와서, 다음 경로로 다시 들어감

이제는 이렇게 네트워크 모드로 접근할 것

 

 

 


강의 4. JPA와 DB설정, 동작확인

application.properties 대신 application.yml 사용할 것. 강사님이 본인은 그게 더 편하단다. 맘대로하면됨

 

resources/application.yml

spring.jpa.hibernate.ddl-auto: create

 > 이 옵션은 애플리케이션 실행 시점에 테이블을 drop 하고, 다시 생성한다.

 

참고: 모든 로그 출력은 가급적 로거를 통해 남겨야 한다.

> show_sql : 옵션은 System.out 에 하이버네이트 실행 SQL을 남긴다.

> org.hibernate.SQL : 옵션은 logger를 통해 하이버네이트 실행 SQL을 남긴다.

 

MemberRepository.java 작성

 

 

테스트 단축키 : Command + Shift + T

Test코드 작성

하지만 이렇게 실행하면 error가 난다.

EntityManager를 통한 모든 데이터 변경은 Transaction 안에서 이루어져야 한다.

나는 아직 transaction을 설정해주지 않았다. 

이제 성공 뜰거임

 

 

쿼리 파라미터 로그 남기기

로그에 다음을 추가하기 org.hibernate.type : SQL 실행 파라미터를 로그로 남긴다.

외부 라이브러리 사용 https://github.com/gavlyukovskiy/spring-boot-data-source-decorator

 

스프링 부트를 사용하면 이 라이브러리만 추가하면 된다.

implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.6'

> 참고: 쿼리 파라미터를 로그로 남기는 외부 라이브러리는 시스템 자원을 사용하므로, 개발 단계에서는 편하 게 사용해도 된다. 하지만 운영시스템에 적용하려면 꼭 성능테스트를 하고 사용하는 것이 좋다