강좌 소개
<1편> 웹 애플리케이션 개발
1. 프로젝트 세팅
2. 회원, 주문, 상품의 요구 사항 분석
3. 도메인 모델 설계
4. 엔티티 설계
5. 애플리케이션 아키텍처 구성
6. 핵심 비즈니스 로직 개발
- 회원, 상품, 주문 도메인 개발
- 핵심 비즈니스 로직 개발
- 테스트 케이스 검증
- 도메인 주도 설계 이해
7. 웹 계층 개발
<2편> API 개발과 성능 최적화
REST API 개발
- 등록,수정, 조회 REST API 개발
- API 개발 실무 노하우
성능 최적화
- JPA 극한의 조회 성능 최적화 노하우 전수
- 복잡한 예제를 6단계로 성능 튜닝
- 실무 JPA 성능 문제의 90% 해결
1편 강좌의 장점
웹 애플리케이션 개발의 전체 사이클을 볼 수 있다.
프로젝트 생성
세팅
의존 관계: Spring Web / Thymeleaf / Spring Data JPA / H2 / Lombok
프로젝트 다운로드
프로젝트 import 방법
build.gradle 파일을 import
build.gradle 파일
//파일: build.gradle
plugins {
id 'org.springframework.boot' version '2.6.2'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
}
// 롬복의 애노테이션을 관리하기 위한 설정
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
스프링부트의 편리한 점:
org.springframework.boot의 버전을 업그레이드하면, 관련 라이브러리의 버전도 함께 자동으로 올라감.
라이브러리 살펴보기
주요 라이브러리
** 로깅 라이브러리: starter는 logging을 포함.
logging은 slf4j를 사용하며, 이는 logback, log4j 등 다양한 구현체와 연결 가능하다.
(slf4j와 logback 연결해서 쓰는 것이 요즘 대세)
** Spring core와 context도 starter에서 포함.
참고: 터미널에서 라이브러리 확인하기 위해 사용하는 명령어
스프링 데이터 JPA는 스프링과 JPA를 먼저 이해하고 사용해야하는 기술이다!
VIEW 환경 설정
thymeleaf를 사용
장점
Natural markup
: 마크업의 구조를 깨지않고 그대로 사용가능하다.
cf) JSP의 경우 if문 안에 html 태그가 별도로 들어가서, 퍼블리싱 원본의 구조를 그대로 유지하기 어렵다.
스프링부트 thymeleaf가 viewName을 매핑하는 방법
resources: template/ + {viewName} + .html
정적 view & 동적 view
정적: resources/static 하위
동적: resources/templates 하위
template HotSwap가능하도록 하는 방법
build.gradle의 디펜던시 추가
implementation 'org.springframework.boot:spring-boot-devtools'
TODO: 리컴파일 가능하도록 위 디펜던시 설정 완료하기.
(강의에서는 위내용만 추가하는데 나는 안됨...흑)
h2 생성
처음 DB 인스턴스 생성시 JDBC URL
jdbc:h2:~/jpashop
이후 재접속시 JDBC URL
jdbc:h2:tcp://localhost/~/jpashop
JPA와 DB 설정, 동작확인
public class MemberRepository {
@PersistenceContext
private EntityManager em;
public Long save(Member member) {
em.persist(member);
return member.getId();
}
}
-> save 함수에서 member 대신 member의 id를 분리하는 이유: 커멘드와 쿼리를 분리한다 원칙을 따름 (CQRS. Command and Query Responsibility Segragation)
** JPA와 DB 설정, 동작확인 => 10:58 이후 다시 재시청 필요
'개발 > JPA' 카테고리의 다른 글
[강의 요약 노트]실전! 스프링 부트와 JPA 활용1 : (3) 애플리케이션 구현 준비 (0) | 2021.12.26 |
---|---|
[강의 요약 노트]실전! 스프링 부트와 JPA 활용1 : (2)도메인 분석 설계 (0) | 2021.12.26 |
[JPA 기본] 2. JPA 소개 (0) | 2021.12.03 |
[JPA 기본] 1. 강좌 소개 (0) | 2021.12.02 |
[JPA] Entity 설계시 ID 값을 Long으로 지정하는 이유 (0) | 2021.11.07 |