[Spring Boot] 스프링 부트 프로젝트 JPA란?-8 (이론)

권경환·2024년 1월 28일
0

JAVA

목록 보기
8/13

JPA란?

JPA는 ORM 기술 표준으로 채택된 인터페이스의 모음입니다.
개발자가 직접 JDBC(Java Database Connectivity)를 구현하면 SQL에 의존하게 되어 개발의 효율성이 떨어지게 되는데 이와 같은 문제점을 해결하기위해 JPA는 개발자 대신 적절한 SQL을 생성하고 데이터베이스를 조작하여 객체를 자동적으로 매핑하게 해주는 역할을 수행합니다.

JPA 인터페이스를 구현하고 있는 JPA 구현체는 다음과 같습니다.

  • 하이버네이트
  • 클립스 링크
  • 데이터 뉴클리어스

Spring Data JPA

Spring Data JPA는 JPA에서 자주 사용되는 기능을 더 쉽게 구현한 라이브러리입니다.

CRUD 처리에 필요한 인터페이스를 제공하며 하이버네이트의 엔티티매니저를 직접 다루지않고 Repository를 정의해서 사용하고 있어 적합한 쿼리를 동적으로 생성하는 방식으로 데이터베이스를 조작합니다.

영속성 컨텍스트

영속성 컨텍스트는 애플리케이션과 데이터베이스 사이에 엔티티와 레코드의 괴리를 해소하는 기능과 객체를 보관하는 기능을 수행합니다.
엔티티 객체가 영속성 컨텍스트에 들어오면 JPA는 엔티티 객체의 매핑정보를 데이터베이스에 반영하는 작업을 수행합니다.
엔티티매니저는 이러한 과정에서 영속성컨텍스트에 접근하기 위한 수단으로 사용됩니다.

엔티티매니저(EntityManager)
엔티티를 관리하는 객체이며 데이터베이스에 접근하여 CRUD작업을 수행합니다.

엔티티의 생명주기

영속성 컨텍스트에서 엔티티 객체는 다음과 같은 4가지 상태로 구분됩니다
비영속

  • 영속성 컨텍스트에 추가되지 않은 객체의 상태

영속

  • 영속성 컨텍스트에 의해 엔티티 객체가 관리되고 있는 상태

준영속

  • 영속성 컨텍스트에 의해 관리되던 엔티티 객체가 컨텍스트와 분리된 상태

삭제

  • 데이터베이스에서 레코드를 삭제하기 위해 영속성 컨텍스트에 삭제 요청을 한 상태
profile
성장을 좋아하는 주니어 개발자의 블로그

0개의 댓글