1. 순수 자바 환경에서 JPA 사용
- 엔티티 매니저 팩토리 생성
- 엔티티 매니저 생성
- 엔티티 매니저에서 트랜잭션 얻기
- 트랜잭션 실행
- 트랜잭션 안에서 로직 실행
- 트랜잭션 커밋
- 엔티티 매니저 종료
- 엔티티 매니저 팩토리 종료
2. 스프링이나 J2EE 컨테이너에서 JPA 사용
1) 사용법
- 컨테이너가 엔티티 매니저를 관리하고 제공해준다
- 엔티티 매니저 팩토리에서 엔티티 매니저를 직접 생성해서 사용하는 것이 아니라 컨테이너가 제공하는 엔티티 매니저를 사용해야 한다
@Repository
public class MemberRepository{
@PersistenceContext //
EntityManager em;
public void save(Member member){
em.persist(member);
}
}
2) 어노테이션
@PersistenceContext
컨테이너가 관리하는 엔티티 매니저를 주입하는 어노테이션
3) 특징
- 엔티티 매니저를 컨테이너로부터 주입 받아서 사용해야 컨테이너가 제공하는 트랜잭션 기능과 연계해서 컨테이너의 다양한 기능들을 사용할 수 있다.
3. 스프링 데이터 JPA
1) 개념
스프링 데이터 프로젝트의 하위 프로젝트 중 하나로, 스프링 프레임워크에서 JPA를 편리하게 사용할 수 있도록 지원하는 프로젝트.
스프링 데이터 프로젝트
- JPA, 몽고DB, REDIS, HADOOP 같은 다양한 데이터 저장소에 대한 접근을 추상화해서 개발자 편의를 제공하고 지루하게 반복하는 데이터 접근 코드를 줄여줌
- 스프링 데이터 JPA 프로젝트는 JPA에 특화된 기능을 제공.
2) 특징
- 데이터 접근 계층을 개발할 때 지루하게 반복되는 CRUD 문제를 세련된 방법으로 해결
- CRUD를 처리하기 위한 공통 인터페이스 제공
- 레포지토리를 개발할 때 인터페이스만 작성하면 실행 시점에 스프링 데이터 JPA가 구현 객체를 동적으로 생성해서 주입해줌
- 데이터 접근 계층을 개발할 때 구현 클래스 없이 인터페이스만 작성해도 개발을 완료할 수 있음.
'Spring > jpa' 카테고리의 다른 글
[JPA] 리포지토리 관련 어노테이션 (0) | 2023.03.07 |
---|---|
[JPA] 스프링 데이터 JPA (0) | 2023.02.23 |
[JPA] 조인 테이블 (0) | 2023.02.21 |
[JPA] 복합키와 식별 관계 매핑 (0) | 2023.02.16 |
[JPA] 고급 매핑 관련 어노테이션 (0) | 2023.02.16 |