본문 바로가기

Back-end/Springboot

[SpringBoot] JPA & 영속성 컨텍스트

JPA

자바 진영의 ORM 기술 표준으로 채택된 인터페이스의 모음. ORM이 큰 개념이라면 JPA는 더 구체화된 스펙을 포함. 동작 메커니즘을 정리한 표준 명세이다.  JPA 기반의 구현체는 대표적으로 세 가지가 있는데, 그 중 가장 많이 사용되는 구현체는 하이버네이트이다.

 

1. 하이버네이트

자바의 ORM 프레임워크로, JPA가 정의하는 인터페이스를 구현하고 있는 JPA 구현체 중 하나이다.

 

2. Spring Data JPA

JPA를 편리하게 사용할 수 있도록 지원하는 스프링 하위 프로젝트 중 하나이다. CRUD 처리에 필요한 인터페이스를 제공하고, 스프링이 적합한 쿼리를 동적으로 생성하는 방식으로 데이터베이스를 조작한다.

 

영속성 컨텍스트

애플리케이션과 데이터베이스 사이에서 엔티티와 레코드의 괴리를 해소하는 기능과 객체를 보관하는 기능을 수행한다. 

엔티티 객체가 영속성 컨텍스트에 들어오면 JPA는 엔티티 객체의 매핑 정보를 데이터베이스에 반영하는 작업을 수행한다. 엔티티 객체가 영속성 컨텍스트에 들어와 JPA의 관리 대상이 되는 시점부터는 해당 객체를 영속 객체라고 부른다.

 

1. 엔티티 매니저

엔티티를 관리하는 객체로 데이터베이스에 접근해서 CRUD 작업을 수행한다. 

 

2. 엔티티의 생명주기

  • 비영속: 영속성 컨텍스트에 추가되지 않은 엔티티 객체의 상태
  • 영속: 영속성 컨텍스트에 의해 엔티티 객체가 관리되는 상태
  • 준영속: 영속성 컨텍스트에 의해 관리되던 엔티티 객체가 컨텍스트와 분리된 상태
  • 삭제: 데이터베이스에서 레코드를 삭제하기 위해 영속성 컨텍스트에 삭제 요청을 한 상태

 

 

 

참고 문헌: 스프링 부트 핵심 가이드(스프링 부트를 활용한 애플리케이션 개발 실무)

http://www.yes24.com/Product/Goods/1101428984

 

스프링 부트 핵심 가이드 - YES24

입문자의 눈높이에 맞춰 차근차근 따라 하면서 배우는 스프링 부트 입문서!《스프링 부트 핵심 가이드》는 스프링 부트 기반의 애플리케이션을 개발할 때 필요한 기초적인 내용들을 소개하고,

www.yes24.com