Data Jpa - 확장 기능

Seongjin Jo·2022년 12월 26일
0

Data Jpa

목록 보기
4/6

✔ 사용자 정의 리포지토리 구현


  • 스프링 데이터 JPA 리포지토리는 인터페이스만 정의하고 구현체는 스프링이 자동 생성
  • 스프링 데이터 JPA가 제공하는 인터페이스를 직접 구현하면 구현해야 하는 기능이 너무 많음

다양한 이유로 인터페이스의 메서드를 직접 구현하고 싶다면?

  • JPA 직접 사용( EntityManager )
  • 스프링 JDBC Template 사용
  • MyBatis 사용
  • 데이터베이스 커넥션 직접 사용 등등...
  • Querydsl 사용

1. 인터페이스를 하나 생성한다.

2. 구현체 생성 ( +Impl )

Custom인터페이스를 상속한다.

3. Repository에 Custom()메서드 상속

4. 호출 코드

✔ Auditing

엔티티를 생성, 변경할 때 변경한 사람과 시간을 추적하고 싶으면?
등록일,수정일,등록자,수정자

  • JPA 주요 이벤트 어노테이션
    • @PrePersist, @PostPersist
    • @PreUpdate, @PostUpdate
  • 스프링 데이터 JPA 주요 어노테이션
    • @CreatedDate
    • @LastModifiedDate
    • @CreatedBy
    • @LastModifiedBy

순수 jpa 사용

일단 생성일에 @Column(update =false)를 이용해서 변경을 막아주고 @PrePersist를 이용해서 등록일,수정일을 둘 다 저장해둔다. 그 후에 @PreUpdate를 이용해서 수정일을 변경해준다.

data jpa 사용

1.@EnableJpaAuditing 스프링 부트 설정 클래스에 적용해줘야 Auditing 사용 가능.

2.스프링 데이터 Auditing 적용 - 등록일, 수정일

3.스프링 데이터 Auditing 적용 - 등록자, 수정자'

4.등록자, 수정자를 처리해주는 AuditorAware 스프링 빈 등록

  • 실무에서는 세션 정보나, 스프링 시큐리티 로그인 정보에서 ID를 받음
  • 실무에서 대부분의 엔티티는 등록시간, 수정시간이 필요하지만, 등록자, 수정자는 없을 수도 있다. 그래서 위와 같이 Base 타입을 분리하고, 원하는 타입을 선택해서 상속한다.
  • 저장시점에 저장데이터만 입력하고 싶으면 @EnableJpaAuditing(modifyOnCreate = false)옵션을 사용하면 된다.

0개의 댓글

관련 채용 정보