첫번째 JPA 기술 기록이다.

 

나는 현재 인프런에서 김영한님의 JPA 실전 강의를 들으면서 Spring Boot + JPA를 공부하고 있으며

 

JPA는 기존의 지식이 없기 때문에 진도에서 나오는 JPA 관련 지식을 top-down 방식으로 기록할 예정이다.

 

오늘 수업에서는 스프링부트와 h2를 jpa를 통해 연동하고 member 클래스를 DB에 저장하는 실습을 하였다.

 

JPA는 기본적인 쿼리를 알아서 실행해주기 때문에 mybatis와는 다른 원리로 작동이 된다.

 

JPA에 대한 자세한 원리나 이론등은 추후에 JPA기본 강의를 병행하며 기록할 예정이며 현재는 프로젝트에서 사용한 

 

JPA관련 기능에 대해서만 기술하겠다.

 

@Entity

Entity는 데이터베이스의 테이블과 1:1로 매핑되는 객체를 의미한다.

객체의 각 인스턴스는 DB의 레코드값과 일치한다.

@Id

Primary key를 의미합니다. 

 

@GeneratedValue 

지정한 인스턴스에 값을 부여하는 방식

4가지 전략(Strategy)이 있고 default 설정은 AUTO 이다.

4가지 전략

< @GeneratedValue(strategy = GenerationType.AUTO) >

The Auto Strategy => JPA가 자동으로 생성전략 결정

(mysql = identity, oracle = sequence)

 

< @GeneratedValue(strategy = GenerationType.IDENTITY) >

The Identity Strategy => 기본키 생성을 DB에 위임하여 Auto-Increment로 값 생성

 

< @GeneratedValue(strategy = GenerationType.SEQUENCE) >

The Sequence Strategy => oracle에서 sequence를 사용하여 값 생성

 

< @GeneratedValue(strategy = GenerationType.TABLE) >

The Table Strategy => DB에 키 생성 전용 테이블을 만들어서 기본키 생성

 

 

@PersistenceContext

 

JPA에서 가장 중요한 개념은 영속성(Persistence)이며

영속성 컨텍스트란 Entity를 영구 저장하는 환경을 의미한다.

 

JPA는 EntityManager를 통해 Persistence Context를 관리하며

EntityManager는 EntityManagerFactory에서 요청이 올때마다(쓰레드 생성시 마다) 생성된다.

 

이 부분을 완전히 이해하려면 JPA의 작동원리와 라이프사이클을 알아야하기 때문에

@PersistenceContext가 EntityManager를 주입해준다고 생각하면 된다.

 

 

'skill > JPA' 카테고리의 다른 글

[JPA] 엔티티(Entity)와 영속성 컨텍스트(Persistence Context)  (0) 2021.06.30

+ Recent posts