코드스테이츠_국비교육/[Section3]

49.01_[Spring MVC] JPA 기반 데이터 액세스 계층_개요(미완)_22.11.01

생각없이 해도 생각보다 좋다. 2022. 11. 2. 00:29

JPA (Java Persistence API)
: JPA는 Java에서 사용하는 ORM 기술의 표준 사양, 스펙이다.
: 표준 사양, 스펙이란 Java의 인터페이스로 정의되어 있다는 의미로, 이를 구현한 구현체가 따로 있다는 것을 의미.
: JPA 학습 = JPA 스펙 구현체를 학습

Hibernate ORM
:JPA 스펙의 구현체 중 하나.

JPA 위치
: JPA 는 데이터 액세스 계층 내부에 있음.
: 데이터 액세스 계층이 상단이고 데이터베이스가 하단이라면, JPA - Hibernate ORM - JDBC API 순으로 존재한다.
: 마지막 과정인 JDBC API는 Hibernate ORM의 내부에서 이용하는 부분이다.

JPA 용어에서 P의 의미
-Persistence
: JPA는 ORM 기술이므로 엔티티 객체와 데이터베이스 테이블을 매핑하고 이를 통해 전달하는 방법으로 데이터를 저장한다. 이 때, JPA는 테이블과 매핑되는 엔티티 객체의 정보를 특정 장소에서 지속되도록 보관하기 때문에 Persistence라는 단어를 쓴다.
: 그 장소의 이름은 Persistence Context이다.
-Persistence Context
: 영속성 컨텍스트에는 `1차 캐시`라는 영역과 `쓰기 지연 SQL 저장소`라는 영역으로 나뉜다.

JPA API 사용
-의존성 라이브러리 추가
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
-application.yml 설정
jpa:
    hibernate:
      ddl-auto: create  # (1) 스키마 자동 생성
    show-sql: true      # (2) SQL 쿼리 출력
(1) : 해당 설정을 통해 엔티티 객체와 매핑되는 테이블을 데이터베이스에 자동으로 생성한다. Spring Data JDBC에서는 Schema.sql 파일을 미리 만들었어야 했다.
(2) : JPA API를 통해 실행되는 SQL 쿼리 로그를 출력해준다.

@Configuration
: 해당 애너테이션이 있으면 Spring에서 Bean 검색 대상 중 하나인 Configuration 클래스로 인식한다.
: 해당 애너테이션이 붙은 클래스 내에 @Bean 애너테이션이 붙은 메서드를 검색하고, 해당 메서드가 반환하는 객체를 Spring Bean으로 추가한다.

return args-> {  };
: CommandLineRunner 객체 반환값을 위와 같은 람다식으로 사용하면  애플리케이션 부트스트랩 과정이 완료된 후에 코드가 실행됨.

>@Entity, @Id, @GeneratedValue