본문 바로가기

JPA/SpringDataJPA5

[SpringDataJPA] Auditing 엔티티를 생성, 변경할 때 변경한 사람과 시간을 추적하고 싶으면? 등록일 수정일 등록자 수정자 순수 JPA 사용 등록일, 수정일 적용 @MappedSuperclass @Getter public class JpaBaseEntity { @Column(updatable = false) private LocalDateTime createdDate; private LocalDateTime updatedDate; @PrePersist public void prePersist() { LocalDateTime now = LocalDateTime.now(); createdDate = now; updatedDate = now; } @PreUpdate public void preUpdate() { updatedDate = .. 2022. 6. 4.
[SpringDataJPA] 사용자 정의 Repository 사용자 정의 Repository 구현이 필요한 이유 스프링 데이터 JPA 리포지토리는 인터페이스만 정의하고 구현체는 스프링이 자동 생성한다. 메서드를 직접 구현해야 할 때도 있다. JPA 직접 사용 (EntityManager) 스프링 JDBC Template 사용 MyBatis 사용 데이터베이스 커넥션 직접 사용 Querydsl 사용 하지만 스프링 데이터 JPA가 제공하는 인터페이스를 직접 구현하면 구현해야 하는 기능이 너무 많다. Spring Data JPA는 필요한 메서드만 구현할 수 있는 방법을 제공한다. 다양한 이유로 인터페이스의 메서드를 직접 구현하고 싶다면? 사용자 정의 Repository 구현 (1) 사용자 정의 인터페이스 구현 public interface MemberRepositoryCu.. 2022. 6. 4.
[SpringDataJPA] 페이징 (Paging) Spring Data JPA에서는 Query Method에 페이징과 정렬 기능을 사용할 수 있도록 기능을 제공한다. Example) JpaRepository의 구현체 Class인 SimpleJpaRepository // SimpleJpaRepository public List findAll(Sort sort) { return this.getQuery((Specification)null, (Sort)sort).getResultList(); } public Page findAll(Pageable pageable) { return (Page)(isUnpaged(pageable) ? new PageImpl(this.findAll()) : this.findAll((Specification)null, pageabl.. 2022. 6. 3.
[SpringDataJPA] 쿼리 메소드 (Query Method) Query Method 란? Spring Data JPA가 Method를 통해 쿼리를 생성하는 기능인 Query Method을 제공한다. Query Method 기능 3가지 메서드 이름으로 쿼리 생성 메서드 이름으로 JPA NamedQuery 호출 @Query 어노테이션을 사용해서 Repository Interface에 쿼리 직접 정의 1. 메서드 이름으로 쿼리 생성 메서드 이름을 분석해서 JPQL 쿼리 실행 (1) 사용 순수 JPA 사용 시 public List findByUsernameAndAgeGreaterThan(String username, int age) { return em.createQuery("select m from Member m where m.username = :username a.. 2022. 6. 3.
[SpringDataJPA] JpaRepository 인터페이스 Spring Data JPA 데이터 접근 계층을 개발할 때 지루하게 반복되는 CRUD 문제를 해결할 수는 방법을 제공한다. CRUD를 처리하기 위한 공통 인터페이스를 제공 Repository를 개발할 대 인터페이스만 작성하면 실행 시점에 스프링 데이터 JPA가 구현 객체를 동적으로 생성해서 주입해준다. 데이터 접근 계층을 개발할 때 구현 클래스 없이 인터페이스만 작성해도 개발을 완료할 수 있다. JpaRepository (1) JpaRepository 공통 인터페이스란? 간단한 CRUD 기능을 공통으로 처리하기 위해 Spring Data JPA가 제공하는 org.springframework.data.repository.JpaRepository 인터페이스 인터페이스의 구현체는 애플리케이션 실행 시점에 Sp.. 2022. 6. 3.
반응형