관리 메뉴

Life goes slowly...

[JPA] JPA 핵심 개념 5가지!!! 본문

프로그래밍/Java

[JPA] JPA 핵심 개념 5가지!!!

빨강소 2026. 1. 26. 10:50
728x90
반응형

JPA의 핵심 개념 5가지 !!! - 이것만 알고 있어도 절반은 이해하고 개발을 할수 있다.

JPA 핵심 개념 5가지 - Entity, EntityManager , Repository, Persistence Context, Transaction

 

<출처:gemini>

① Entity (엔티티)

DB 테이블과 1:1로 매핑되는 Java 클래스

@Entity
public class Member {

    @Id
    @GeneratedValue
    private Long id;

    private String name;
}
  • 정의: 데이터베이스의 테이블과 매핑(연결)되는 자바 클래스입니다.
  • 역할: 실제 데이터가 담겨 있는 객체입니다. 이 클래스의 인스턴스(객체) 하나는 데이터베이스 테이블의 한 행(Row)에 해당합니다. 개발자는 이 객체를 생성하고 데이터를 채워서 JPA에게 넘겨주게 됩니다.

② EntityManager (엔티티 매니저)

JPA의 핵심 객체, DB와 대화하는 창구

하지만 Spring에서는 직접 쓰진 않지만 대신 Repository를 사용합니다.

  • 정의: 엔티티의 생명주기를 관리하는 주체입니다.
  • 역할: 이름 그대로 엔티티를 '관리'하는 객체입니다. 개발자가 데이터베이스에 데이터를 저장(persist), 조회(find), 삭제(remove)하고 싶을 때, 이 엔티티 매니저의 메서드를 호출하여 작업을 요청합니다. 영속성 컨텍스트와 상호작용하며 실질적인 CRUD(생성, 조회, 수정, 삭제) 작업을 처리합니다.

③ Repository

DB 작업을 대신 해주는 인터페이스

public interface MemberRepository 
        extends JpaRepository<Member, Long> {
}
 

이 한 줄로 기능이 자동 제공됩니다.  -> save(), findById(), findAll(), delete()

  • 정의: 데이터 접근 계층(DAO)을 추상화한 인터페이스입니다.
  • 역할: Spring 프레임워크에서 JPA를 더 쉽게 사용할 수 있도록 제공하는 기능입니다. 개발자가 복잡한 EntityManager를 직접 다루는 대신, Repository 인터페이스를 상속받아 save(), findById() 같은 직관적인 메서드만 호출하면 Spring이 내부적으로 EntityManager를 사용하여 적절한 데이터베이스 작업을 수행합니다.

 


④ Persistence Context (영속성 컨텍스트) ⭐ 핵심 개념

JPA의 1차 캐시 + 객체 관리 공간

중요한 특징:

  • 같은 ID 조회 → DB 안 가고 캐시에서 반환
  • 객체 값 변경 → 자동 UPDATE
member.setName("변경됨");
// save() 안 해도 트랜잭션 끝나면 자동 반영
  • 정의: 엔티티를 영구 저장하는 환경이라는 뜻으로, 엔티티 매니저가 엔티티를 관리하는 **임시 메모리 공간(1차 캐시)**입니다.
  • 역할: JPA의 가장 중요한 특징으로, 애플리케이션과 데이터베이스 사이에서 버퍼 역할을 합니다.
    • 1차 캐시: 데이터를 조회할 때 데이터베이스에 바로 접근하기 전에 이곳을 먼저 확인하여 성능을 높입니다.
    • 변경 감지(Dirty Checking): 이곳에 관리되는 엔티티의 데이터가 변경되면, JPA가 이를 자동으로 감지하여 별도의 업데이트(update) 호출 없이도 데이터베이스에 변경 사항을 반영합니다.

⑤ Transaction (트랜잭션)

작업의 하나의 묶음

  • 메서드 시작 → 트랜잭션 시작
  • 메서드 종료 → 자동 commit
  • 예외 발생 → rollback
@Transactional
public void updateName(Long id) {
    Member member = repository.findById(id).get();
    member.setName("new name");
}
  • 정의: 데이터베이스 작업의 논리적인 실행 단위입니다.
  • 역할: 여러 단계의 데이터베이스 작업을 하나의 묶음으로 처리합니다. 이 묶음 안의 모든 작업이 성공적으로 끝나야 데이터베이스에 결과가 영구적으로 반영(Commit)되며, 중간에 하나라도 실패하면 모든 작업이 처음 상태로 되돌아갑니다(Rollback). JPA의 모든 데이터 변경 작업은 반드시 트랜잭션 안에서 이루어져야 합니다.

 

728x90
반응형
Comments