스프링 데이터 JPA 분석

2023. 9. 29. 01:06LECTURES/실전! 스프링 데이터 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