[#SpringBoot] Jpa 개념 정리
Author : 제이크
Date : 2020-05-30
Subject : JPA 개념 정리
# JPA 구조
JPA 를 이용하면 Java 로 작성된 클래스, 객체들과 데이터베이스 상에 테이블, 레코드들을 자동으로 관리합니다.
특정 데이터베이스의 쿼리를 작성할 필요 없이 Java 코드만으로 데이터를 꺼낼 수 있습니다.
JPA는 각 데이터베이스의 쿼리를 Java 로 번역해주는 역할을 하며, 우리는 JPA 코드를 사용함으로써
데이터를 가공할 수 있습니다.
# 엔티티(Entity), 엔티티 매니저(EntityManager)
엔티티 : 데이터베이스상에서 데이터로 관리하는 대상을 의미합니다.
'상품', '회사', '직원' 과 같은 명사이면서 업무와 관련된 데이터를 엔티티로 규정합니다.
하나의 엔티티 타입을 생성한다라는 의미는 하나의 클래스를 작성한다는 의미입니다.
# 영속 컨텍스트(Persistence Context)와 엔티티 객체
- New(비영속) : Java 영역에 객체만 존재하고, 데이터베이스와 연동된 적이 없는 상태, 엔티티 매니저의 관리하에
있는 것이 아니기 때문에 순수한 Java 객체
- Managed(영속) : 데이터베이스에 저장되고, 메모리상에서도 같은 상태로 존재하는 상태, 객체는 영속 컨텍스트 내에
들어가게 되고, id(PK) 값을 통해서 필요한 엔티티 객체를 꺼내 사용할 수 있게 됩니다.
- Removed(삭제) : 데이터베이스상에서 삭제된 상태. 객체는 더 이상 영속 컨텍스트에 존재하지 않습니다.
- Detached(준영속) : 영속 컨텍스트에서 엔티티 객체를 꺼내서 사용하는 상태. 준영속 상태의 객체는 고유한 id(PK)를
가지고 있지만, 아직 데이터베이스와 동기화가 이루어지지 않은 상태
# JPA 기본 어노테이션
# JPA Repository
# CrudRepository 메소드