스프링 부트와 AWS로 혼자 구현하는 웹 서비스 - 03장
🚨 지난 주에 프로젝트 폴더를 옮긴 후 다시 인텔리제이를 켜니 이런 경고창이 나타났다.
.idea/vcs.xml 파일을 삭제하고 창을 닫았다가 다시 실행하니 문제가 해결되었다.
관계형 데이터베이스는 SQL만 인식할 수 있음
-> SQL 코드 과잉, SQL 종속 문제
객체지향 프로그래밍 언어와 관계형 데이터베이스를 중간에서 패러다임 일치 시켜주기 위한 기술
(수정 후 다시 로드해야 함)
dependencies {
...
// Spring Data JPA 추상화 라이브러리
// 스프링 부트 버전에 맞춰 자동으로 JPA 관련 라이브러리 버전 관리
compile('org.springframework.boot:spring-boot-starter-data-jpa')
// h2: 인메모리 관계형 데이터베이스
// 메모리에서 실행, 재시작할 때마다 초기화 -> 테스트 용도
// JPA 테스트, 로컬환경 구동에 사용
compile('com.h2database:h2')
...
@Entity
@Id
@GeneratedValue
@Column
JPA의 어노테이션, 테이블과 대응하는 클래스
🚨 Cannot resolve symbol 'assertThat' 문제는 아래의 코드를 추가하여 해결
import static org.assertj.core.api.Assertions.assertThat;
출처: https://codecrafting.tistory.com/2
spring.jpa.show_sql=true
// 출력되는 쿼리 로그를 H2 -> MySQL 버전으로 변경
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
필요한 클래스
1. Request 데이터를 받을 Dto
2. API 요청을 받을 Controller
3. 트랜잭션, 도메인 기능 간의 순서를 보장하는 Service
@Controller)
와 JSP/Freemaker 등 뷰 템플릿 영역@Filter
), 인터셉터, 컨트롤러 어드바이스(@ControllerAdvice
) 등 외부 요청과 응답에 대한 전반적인 영역@Service
에 사용되는 서비스 영역@Transactionl
이 사용되어야 하는 영역@Entity
가 사용된 영역domain: 비즈니스 처리를 담당하며 Entity가 사용되는 영역 - Entity 영역
Posts
: 실제 DB의 테이블과 매칭될 클래스 (Entity 클래스)PostsRepository
: Posts 클래스로 DB에 접근하게 해주는 인터페이스 (DB Layer 접근자)service: 트랜잭션, 도메인 간의 순서를 보장하는 영역 - 순서 보장 영역
PostsService
: 순서 보장을 위한 serviceweb : API의 요청을 받는 컨트롤러 등의 뷰 템플릿 영역, 외부 요청과 응답에 대한 전반적인 영역 - 요청을 받는 영역
PostsApiController
: API를 요청받을 컨트롤러PostsReponseDto
: 조회 기능을 위한 DtoPostsSaveRequestDto
: 등록 기능을 위한 DtoPostsUpdateRequestDto
: 수정 기능을 위한 Dto스터디 팀원분의 정리본을 통해 개념을 정리할 수 있었다.
Audit: 감시하다, 감사하다라는 뜻
Spring Data JPA에서 시간에 대해서 자동으로 값을 넣어주는 기능