책을 읽으면서 공부한 내용입니다.
책 제목: 스프링 부트와 AWS로 혼자 구현하는 웹 서비스
3장에서 배운 내용 (책 124쪽)
3-1. JPA / Hibernate / Spring Data Jpa의 관계
3-2. Spring Data Jpa를 이용하여 관계형 데이터베이스를 객체지향적으로 관리하는 방법
3-3. Jpa의 더티 체킹을 이용하면 Update 쿼리 없이 테이블 수정이 가능하다는 것
3-4. Jpa Auditing을 이용하여 등록/수정 시간을 자동화하는 방법
JPA는 인터페이스이다. 이 인터페이스를 구현하는 구현체로는 Hibernate, Eclipse Link 등이 있다. 스프링에서는 구현체를 직접 다루지 않고, 이를 추상화시킨 Spring Data JPA 모듈을 이용한다. 셋의 관계는 다음과 같이 표현할 수 있다.
JPA <- Hibernate <- Spring Data JPA
이러한 방식으로 Spring Data JPA를 이용하면 Hibernate 외의 다른 구현체로 교체하기가 쉽고, 또 관계형 데이터베이스 외의 다른 저장소로 교체하기도 쉽다.
러닝 커브(learning curve)란 사람들이 가진 경험의 양과 업무에서의 능숙도 사이의 관계를 그래프로 나타낸 것이다.
기울기가 큰, 가파른 경사의 곡선은 학습하기에 어려움 또는 많은 노력을 들인다고 하여도 그만큼 능숙도가 오르지 않음을 의미한다.
build.gradle에 의존성 추가
compile('org.springframework.boot:spring-boot-starter-data-jpa')
compile('com.h2database:h2')
JPA Auditing: 데이터의 생성시간과 수정시간을 코드를 간단히 한다.
@Getter
@MappedSuperClass
@EntityListeners(AuditingEntityListener.class)
public abstract class BaseTimeEntity {
@CreatedDate
private LocalDateTime createdDate;
@LastModifiedDate
private LocalDateTime modifiedDate;
}
public class Posts extends BaseTimeEntity {}
@EnableJpaAuditing
@SpringBootApplication
public class Application {}