Spring

DB / JPA

Dear-J 2025. 5. 1. 22:48

적용

@Entity : JPA가 사용하는 객체

@Id : 테이블의 PK와 해당 필드를 매핑

@GeneratedValue(strategy = GenerationType.IDENTITY) : PK 생성 값을 데이터 베이스에서 생성

@Column : 객체의 필드를 테이블의 컬럼과 매핑

>> 생략할 경우 필드의 이름을 테이블 컬럼으로 사용

 

JPA는 public 또는 protected의 기본 생성자 필수

 

스프링을 통해 EntityManager를 주입 받음

>> JPA의 모든 동작은 엔티티 매니저를 통해 이루어짐

>> 엔티티 매니저는 내부에 데이터 소스를 가지고 있고 데이터 베이스에 접근 가능

 

@Transactional

>> JPA의 모든 데이터 변경은 트랜잭션 안에서 이루어져야 함

 

JPA에서 객체를 테이블에 저장할 때는 엔티티 매니저가 제공하는 persist() 메서드 사용

 

JPA는 트랜잭션이 커밋되는 시점에 변경된 엔티티 객체가 있는지 확인

>> 특정 엔티티 객체가 변경된 경우에 UPDATE SQL 실행

 

JPA에서 엔티티 객체를 PK를 기준으로 조회할 때는 find() 사용

 

예외 변환

엔티티 매니저는 예외가 발생하면 JPA 관련 예외 발생시킴

PersistenceException과 그 하위 예외 발생

@Repository

>> 컴포넌트 스캔의 대상

>> 예외 변환 AOP 적용 대상

>> 스프링은 JPA 예외 변환기 등록

 

예외 변환 후

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

출처 : 김영한, 스프링 DB 2편 - 데이터 접근 활용 기술

'Spring' 카테고리의 다른 글

DB / Querydsl  (0) 2025.05.03
DB / Spring Data JPA  (0) 2025.05.02
DB / MyBatis  (0) 2025.04.29
DB / Test  (0) 2025.04.28
DB / Spring JdbcTemplate  (0) 2025.04.27