728x90
반응형
JPA(Java Persistence API)
JPA는 ORM 기술의 표준 명세로 자바에서 제공하는 API.
ORM이란 Object Relational Mapping 의 약자로 객체와 관계형 데이터베이스를 매핑해주는 것을 말함.

JPA 는 인터페이스고 이를 구현한 대표적인 구현체로 Hibernate, EclipseLink, DataNucleus, OpenJpa, TopLink 등이 있음.
대표적인 오픈소스 하이버네이트.
JPA 사용시 장점
- 특정 데이터베이스에 종속되지 않음
- 객체지향적 프로그래밍
- 생산성 향상
JPA 사용시 단점
- 복잡한 쿼리 처리
- 성능 저하 위험
- 학습 시간
JPA 동작 방식

엔티티
@Entity 데이터베이스의 테이블에 대응하는 클래스와 유사
엔티티 매니저 팩토리
엔티티 매니저 인스턴스를 관리하는 주체
엔티티 매니저
영속성 컨텍스트에 접근하여 엔티티에 대한 데이터베이스 작업을 제공
- find() : 영속성 컨텍스트에서 엔티티르 검색하고 없을 경우 데이터베이스에서 데이터를 찾아 영속성 컨텍스트에 저장
- persist() : 엔티티를 영속성 컨텍스트에 저장
- remove() : 엔티티 클래스를 영속성 컨텍스트에서 삭제
- flush() : 영속성 컨텍스트에 저장된 내용을 데이터베이스에 반영
영속성 컨텍스트

- 비영속(new) : new 키워드를 통해 생성된 상태로 영속성 컨텍스트와 관련이 없는 상태
- 영속(managed) : 엔티티가 영속성 컨텍스트에서 저장된 상태로 영속성 컨텍스트와 관련이 없는 상태
- 준영속 상태(detached) : 영속성 컨텍스트에 엔티티가 저장되었다가 분리된 상태
- 삭제 상태(removed) : 영속성 컨텍스트와 데이터베이스에서 삭제된 상태
Item item = new Item();
item.setItemNm("test")
//엔티티 생성 == 영속성 컨텍스트와 관련 없음
EntityManager em = entityManagerFactory.createEntityManager();
//엔티티 매니저 팩토리로부터 엔티티 매니저 생성
EntityTransaction transaction = em.getTransaction();
transaction.begin();
//엔티티 매니저는 데이터 변경 시 데이터 무결성을 위해 반드시 트랜잭션을 시작해야 함
em.persiste(item);
//생성한 엔티티가 영속성 컨텍스트에 저장된 상태
transaction.commit();
//트랜잭션을 데이터베이스에 반영
em.close();
emf.close();
//인테테 매니저와 엔티티 매니저 팩토리의 close() 메소드를 호출해 사용한 자원을 반환
영속성 컨텍스트 사용 시 이점

- 1차 캐시
- 동일성 보장
- 트랜잭션을 지원하는 쓰기 지연
- 변경 감지
728x90
반응형
'Spring boot' 카테고리의 다른 글
| Thymeleaf(타임리프) (0) | 2023.09.04 |
|---|---|
| Spring DATA JPA (2) | 2023.09.02 |
| 쿼리 메소드 (0) | 2023.09.02 |
| @Entity 와 @Repository 설계 (0) | 2023.09.01 |
| Spring boot (0) | 2023.08.28 |