- JPA란
- ORM(Object-Relational-Mapping) 스펙으로 자바 객체와 관계형 DB간의 매핑 처리를 위한 API
- Java Persistence API(2.2버전)
- Jakarta Persistence API(3.0버전)
- 2.2 버전부터 (JCP → 이클립스 재단)으로 이관 진행
- Jakarta EE 9 버전(JPA 3.0)
- 보통 JPA만 단독으로 사용하기 보다는 스프링과 함께 사용
- 스프링 6버전부터 Jakarta EE 9+ 지원
- JPA 특징
- 어노테이션을 통해 매핑 설정을 하며 XML 파일을 통해서 매핑 설정도 가능함
- String, int, LocalData 등 기본적인 타입에 대한 매핑도 지원
- 커스텀 타입 변환기 지원 → 내가 만든 Money 타입을 DB 컬럼에 매핑 가능
- 밸류 타입 매핑 지원 → 한 개 이상 컬럼을 한 개 타입으로 매핑 가능
- 클래스 간 연관 지원 → 1:1, 1:N, N:1, N:M
- 상속에 대한 매핑도 지원
- JPA Repository 컨벤션
- method
save()
: 레코드 저장(insert, update)
findOne()
: primary key로 레코드 한 건 찾기
findAll()
: 전체 레코드 불러오기 정렬, 페이징 가능
count()
: 레코드 개수
delete()
: 레코드 삭제
- keyword
and
(여러 필드 and로 검색) → findOneByEmailAndUserId(String email, String userId);
or
(여러 필드 or로 검색) → findOneByEmailOrUserId(String email, String userId);
between
(두 필드 사이값 검색) → findAllByCreateDateBetween(Date frommDate, Date toDate);
lessthan
(작은 항목 검색) → findAllAgeLessThan(int age);
greaterThanEqual
(크거나 같은 항목 검색) → findAllAgeGreaterThanEqual(int age);
like
(like 검색) → findAllNameLike(String ‘Kim%’);
isNull
(null인 항목 검색) → findAllNameIsNull();
in
(여러 값 중의 하나) → findAllName(String…names);
orderBy
(정렬) → findAllEmailOrderByNameAsc(String email);
@GeneratedValue
@EntityListener
@MappedSuperClass
config
JPA Auditing
Spring Data JPA, JPA
query dsl(spring boot 3.0)
JPQL
영속성 컨텍스트