개발자의 오르막
[#SpringBoot] Jpa 개념 정리 본문
# JPA 구조
JPA 를 이용하면 Java 로 작성된 클래스, 객체들과 데이터베이스 상에 테이블, 레코드들을 자동으로 관리합니다.
특정 데이터베이스의 쿼리를 작성할 필요 없이 Java 코드만으로 데이터를 꺼낼 수 있습니다.
JPA는 각 데이터베이스의 쿼리를 Java 로 번역해주는 역할을 하며, 우리는 JPA 코드를 사용함으로써
데이터를 가공할 수 있습니다.
# 엔티티(Entity), 엔티티 매니저(EntityManager)
엔티티 : 데이터베이스상에서 데이터로 관리하는 대상을 의미합니다.
'상품', '회사', '직원' 과 같은 명사이면서 업무와 관련된 데이터를 엔티티로 규정합니다.
하나의 엔티티 타입을 생성한다라는 의미는 하나의 클래스를 작성한다는 의미입니다.
엔티티매니저 : 엔티티 객체들을 관리하는 역할을 합니다. 'Life Cycle'로 자신이 관리해야 하는 엔티티 객체들을
영속 컨테스트(Persistence Context) 라는 곳에 넣어두고, 객체들의 생사 관리를 합니다.
# 영속 컨텍스트(Persistence Context)와 엔티티 객체
- New(비영속) : Java 영역에 객체만 존재하고, 데이터베이스와 연동된 적이 없는 상태, 엔티티 매니저의 관리하에
있는 것이 아니기 때문에 순수한 Java 객체
- Managed(영속) : 데이터베이스에 저장되고, 메모리상에서도 같은 상태로 존재하는 상태, 객체는 영속 컨텍스트 내에
들어가게 되고, id(PK) 값을 통해서 필요한 엔티티 객체를 꺼내 사용할 수 있게 됩니다.
- Removed(삭제) : 데이터베이스상에서 삭제된 상태. 객체는 더 이상 영속 컨텍스트에 존재하지 않습니다.
- Detached(준영속) : 영속 컨텍스트에서 엔티티 객체를 꺼내서 사용하는 상태. 준영속 상태의 객체는 고유한 id(PK)를
가지고 있지만, 아직 데이터베이스와 동기화가 이루어지지 않은 상태
# JPA 기본 어노테이션
# JPA Repository
# CrudRepository 메소드
'SpringFrameWork > SpringBoot' 카테고리의 다른 글
[SpringBoot] 멀티모듈 프로젝트 생성 (0) | 2020.07.12 |
---|---|
[#SpringBoot] CascadeType.Remove 와 orphanRemoval 의 차이 (0) | 2020.05.28 |
[#SpringBoot ] Lombook 어노테이션 정리 (0) | 2020.05.16 |
[Spring Boot] application.yml 설정 방법 (0) | 2020.04.02 |
[스프링 기반 REST API 개발 #02] EVENT REST API (0) | 2020.03.22 |