@2022년 10월 3일 → 2022년 10월 9일

✏️ Chapter 3. 스프링 부트에서 JPA로 데이터베이스 다뤄보자

<aside> 💡 3장~6장 : 하나의 게시판을 만들기 7장~10장: 서비스를 AWS에 무중단 배포하기

</aside>

<aside> 1️⃣ 프로젝트 Spring Data Jpa 적용하기

<aside> 2️⃣ Spring Data JPA 테스트 코드 작성하기

💥 쿼리를 로그로 보는 방법

src/main/resources 디렉토리 아래에 *application.properties* 파일을 생성

//옵션 추가 시 콘솔에서 쿼리 로그 확인 가능
spring.jpa.show_sql=true 

//옵션 추가 시 출력되는 쿼리 로그를 MySQL 버전으로 변경 가능
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect

</aside>

<aside> 3️⃣ 등록/수정/조회 API 만들기

<aside> 💡 API를 만드는데 필요한 클래스

  1. Request 데이터를 받을 Dto
  2. API 요청을 받을 Controller
  3. 트랜잭션, 도메인 기능 간의 순서를 보장하는 Service </aside>

<aside> 👍 도메인 모델에서 처리할 경우

서비스 메소드는 트랜잭션과 도메인 간의 순서만 보장해줌

</aside>

<aside> 👎 트랜잭션 스크립트를 사용할 경우

모든 로직이 서비스 클래스 내부에서 처리되므로 서비스 계층이 무의미하며,

객체란 단순히 데이터 덩어리가 됨.

</aside>

<aside> 📌 스프링에서 Bean 을 주입받는 방식

setter

@Autowired (권장 X)

⭐생성자

직접 안쓰고 롬복 어노테이션으로 사용 가능 (@RequiredArgsConstructor) 해당 클래스의 의존성 관계가 변경될 때마다 생성자 코드를 계속해서 수정하는 번거로움 해결

</aside>

등록/수정/삭제 기능 만들기

등록/수정/삭제 기능 테스트 코드로 검증하기

<aside> 💡 톰캣으로 조회기능 확인해보기

  1. 웹 콘솔 옵션 활성화 application.properiesspring.h2.console.enable=true 옵션 추가
  2. Application 클래스의 main 메소드 실행 → 톰캣 실행
  3. http://localhost:8080/h2-console 로 접속 </aside>

</aside>

<aside> 4️⃣ **JPA Auditing으로 생성시간/수정시간 자동화하기

JPA Auditing 이란?**

생성일/수정일/생성자를 자동화

<aside> 💡 Spring 웹 계층

</aside>