반응형
Notice
Recent Posts
Recent Comments
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- dunklow
- 제이쿼리
- Dunk Low
- 코로나19
- 주식
- 덩크 로우
- Java
- JavaScript
- 발매예정
- 주식공부
- react
- dunk high
- stockx.com
- 오라클
- Nike
- 리눅스
- 드로우
- jQuery
- GIT
- draw
- 덩크 하이
- Python
- 파이썬
- 나이키
- oracle
- 자바스크립트
- Linux
- 리액트
- sacai
- 덩크로우
Archives
- Today
- Total
Life goes slowly...
[JPA] JPA 핵심 개념 5가지!!! 본문
728x90
반응형
JPA의 핵심 개념 5가지 !!! - 이것만 알고 있어도 절반은 이해하고 개발을 할수 있다.
JPA 핵심 개념 5가지 - Entity, EntityManager , Repository, Persistence Context, Transaction

① 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
반응형
'프로그래밍 > Java' 카테고리의 다른 글
| [JPA] 초보자가 쉽게 이해하는 JPA 동작구조 (0) | 2026.01.25 |
|---|---|
| [JPA] 초보자가 쉽게 이해하는 Spring Data JPA 설명 (3) | 2026.01.24 |
| [Java] 자바에서 객체 정렬하기 - Comparable, Comparator (0) | 2020.10.17 |
| [Java] 자바의 폴더 생성 함수 - mkdir(), mkdirs() (2) | 2020.10.16 |
| [Java] java.lang.NullPointerException 원인 그리고 해결방법 (0) | 2020.10.14 |
| [Java] 자바 로직 분리 - DAO / DTO / VO (0) | 2020.10.14 |
| [Java] 자바 Log 유틸 - Apache Log4j (0) | 2020.10.13 |
| [Java] 자바 - 현재 날짜,시간 조회하기 (0) | 2020.10.13 |
Comments