스프링 데이터 JPA 분석
2023. 9. 29. 01:06ㆍLECTURES/실전! 스프링 데이터 JPA
스프링 데이터 JPA 구현체 분석
SimpleJpaRepository
에@Transactional
이 걸려 있음 → 스프링 데이터 JPA를 사용하면 트랜잭션이 없어도 데이터 등록, 변경이 가능@Transactional(readOnly = true)
를 사용하면 flush를 생략해서 약간의 성능 향상 가능save()
는 새로운 엔티티면persist
아니면merge
새로운 엔티티를 구별하는 방법
- 기본 전략
- 식별자가 객체일 때 null로 판단
- 식별자가 자바 기본 타입일 때 0으로 판단
Persistable
인터페이스를 구현해서 판단 로직 변경 가능
@GenerateValue
를 사용하지 않고 id를 직접 할당할 경우 이미 식별자 값이 있는 상태로save()
를 호출함 →merge()
가 호출됨merge()
는 우선 DB를 호출해서 값을 확인 후 값이 없으면 새로운 엔티티로 인지하므로 비효율적
Persistable
을 사용해서 새로운 엔티티 확인 여부를 직접 구현하는 것이 효과적- 보통 생성일시가 필요하므로
isNew()
에서createdDate == null
값을 리턴하도록 오버라이드하여 사용
- 보통 생성일시가 필요하므로
실전! 스프링 데이터 JPA - 인프런 | 강의
스프링 데이터 JPA는 기존의 한계를 넘어 마치 마법처럼 리포지토리에 구현 클래스 없이 인터페이스만으로 개발을 완료할 수 있습니다. 그리고 반복 개발해온 기본 CRUD 기능도 모두 제공합니다.
www.inflearn.com
'LECTURES > 실전! 스프링 데이터 JPA' 카테고리의 다른 글
나머지 기능들 (0) | 2023.09.29 |
---|---|
확장 기능 (0) | 2023.09.29 |
쿼리 메소드 기능 (0) | 2023.09.29 |
공통 인터페이스 기능 (0) | 2023.09.29 |
프로젝트 환경 설정 / 예제 도메인 모델 (0) | 2023.09.29 |