Spring/jpa

[JPA] JPA를 사용하는 다양한 방법

라임온조 2023. 2. 23. 09:38

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