[실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발]
복습 및 기록용 - 강의노트 정리
섹션 1. 프로젝트 환경설정
[#1. 프로젝트 생성]
요즘 JSP 잘 사용하지 않는 추세
- 성능, 여러 이슈
- 스프링 부트 내장 톰캣에서도 권장x
Spring Data JPA
H2 Database
- 간단하게 웹 애플리케이션 실행시 데이터베이스를 메모리에 상태에 내장해서 실행 가능
- 간단한 교육용 데이터베이스로 주로 사용
스프링부트 플러그인
Gradle
[#2. 라이브러리 살펴보기]
HiKariCP : 커넥션 풀
slf4j
- 로거 찍는 인터페이스 모음
- 구현체 : logback, log4j
=> 라이브러리 설정만 살짝 바꾸면 구현되어 있는 로거 변경 가능
- slf4j + logback 조합이 대세인 추세
기본적으로 springboot starter 라이브러리는 spring core를 기본적으로 물고 감
[#3. View 환경 설정]
마크업을 깨지 않고 사용 가능한 장점
thymeleaf
-> 웹브라우저에서 열 수 있음 (Natural Template)
thymeleaf 극단적인 단점
- 문법 맞지 않으면 오류
- 구현체 : logback, log4j
=> 3.x 버전대로 오면서 많이 극복
뷰 템플릿 엔진 (서버 사이드 렌더링)
Model model
- 스프링 UI
- Model에 데이터를 실어서 뷰에 넘길 수 있음 (컨트롤러->뷰)
- Key-Value
- return은 화면 이름
return "hello";
-> 자동으로 뒤에 hello.html
.html이 붙음
main > resources > templates
hello.html
- 정적 컨텐츠 : static
- 템플릿 엔진, 렌더링 : templates
[#4. JPA와 DB 설정, 동작확인]
- propeties 혹은 yml 사용
설정 많아지고 복잡해지는 경우 -> yml으로
MVCC=TRUE 옵션
-
여러 개 한번에 접근할 때 처리가 빠르게 됨
-
옵션 추가 권장
logging:
level:
org.hibernate.SQL: debug
show_sql: true
- system.out 통해 sql 볼 수 있음
- 운영 환경에서는 사용하지 x
@Id @GeneratedValue
- GeneratedValue 데이터베이스가 자동 생성
@Repository
- 엔티티 찾아주는 역할로, DAO와 비슷하다.
- Spring이 제공하는 기본 타입
- 기본 컴포넌트 스캔이 되는 어노테이션 중에 하나이다.
- 자동으로 스프링 빈 등록
@PersistenceContext
- 스프링 부트
- 스프링 컨테이너 위에서 모든 것이 동작
- EntityManager 자동 생성
return member.getId();
- 커맨드와 쿼리를 분리하라, 원칙에 따라
- 아이디 정도만 조회하도록 설계함.
@Transactional
- 테스트에 있으면, 테스트가 끝나면 DB 롤백
- Rolled back transaction for test
@Rollback(false)
- value를 false로 하면 롤백x
- 데이터베이스에 저장