본문 바로가기

개발/Spring

JPA란

JPA(Java Persistence API)는 자바의 ORM 기술 표준이다.

ORM(Object-Relational Mapping) 객체와 관계형 DB를 매핑하는 것이다.

즉, 개발자가 직접 SQL을 작성하지 않고, 객체를 자동으로 Mapping하여 DB에 전달한다.

 

JPA의 구동 방식

그림과 같이 JPA는 Persistence로 EntityManagerFactory를 생성한 후, 요청에 따라 EntityManager를 생성하여 Transaction 단위를 처리한다.

 

+ JPA는 트랜잭션 단위 안에서 작업을 해줘야 한다. (이 부분이 왜 그런지 알아보자)

 

이러한 과정을 코드로 간단히 구현한 부분이다.
persistence를 통해 EntityManagerFactory를 생성하고,
EntityManagerFactory로 EntityManager를 생성하여 작업을 수행한다.

 

 

JPA를 이해하는데에 있어서 가장 중요한 두가지가 있는데

1. 객체와 관계형 데이터베이스 매핑하기

2. 영속성 컨텍스트

 

이 두가지 중에 영속성 컨텍스트에 대해 살펴보겠다.

 

JPA는 테이블을 객체로서 관리하고, DB에 CRUD를 할 때 영속성 컨텍스트라는 것을 이용하게 된다.

 

그럼 영속성 컨텍스트란 무엇인가?

영속성 컨텍스트는 눈에 보이지 않는 논리적인 개념이다.

엔티티를 영구 저장하는 환경이라고 생각할 수 있고, 그 안에는 테이블과 매칭되는 객체들을 영속성 컨텍스트를 통해 엔티티를 영속화 한다.

 

위 사진과 같은 코드에서 em.persist(member)는 member객체를 영속성 컨텍스트 안에 영속화 한다는 의미이다..

이 포스팅 말고 다음 포스팅에서 언급할테지만, 밑에 em.commit()이 나오기 전까지는 엔티티가 영속 컨텍스트에는 존재하지만, 아직 디비에 반영되기는 전이다.

 

간단히 영속성 컨텍스트 안에서의 엔티티의 생명주기만 언급하고, 자세한 내용은 다음 글에서 다루겠다.

 

 

'개발 > Spring' 카테고리의 다른 글

[JPA] 연관관계 매핑  (1) 2021.07.27
[JPA] 영속성 컨텍스트  (0) 2021.07.23
[Spring] MockMvc  (0) 2021.07.20
[프로그래머스] Level2_오픈채팅방  (0) 2021.07.08
[Spring] Spring MVC 전체 구조  (0) 2021.06.14