개발자의 오르막

[#SpringBoot] Jpa 개념 정리 본문

SpringFrameWork/SpringBoot

[#SpringBoot] Jpa 개념 정리

계단 2020. 5. 16. 16:18

# 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 메소드

 

 

Comments