본문 바로가기

Web/JPA

확장기능

* 사용자 정의 리포지터리 구현

  인터페이스는 아무이름이나 상관없음

     그러나 구현하는 클래스 이름은 MemberRepository + Impl 붙여서 생성한다.

public interface MemberRepositoryCustom { 
List<Member> findMemberCustom();
}
@RequiredArgsConstructor 
public class MemberRepositoryImpl implements MemberRepositoryCustom {
      
      private final EntityManager em;
      
      @Override   
      public List<Member> findMemberCustom() {
        return em.createQuery("select m from Member m")  
        .getResultList();    
      } 
 }
public interface MemberRepository extends JpaRepository<Member, Long>, MemberRepositoryCustom {
}

 

!! 임의의 레포지토리를 생성해서 진행해도 된다.

 꼭 사용자 정의 리포지토리 구현을 안해도 됨.


* Auditing

 : 등록일, 수정일 , 등록자 , 수정자 자동세팅

 

   순수 JPA 

package study.datajpa.entity;

@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 = LocalDateTime.now();  
    }
}

 : 상속받아서 사용

 

스프링 JPA

 : @EnableJpaAuditing  스프링 부트 설정 클래스에 적용해야함

package study.datajpa.entity;

@EntityListeners(AuditingEntityListener.class) 
@MappedSuperclass
@Getter 
public class BaseEntity {

    @CreatedDate  
    @Column(updatable = false)
    private LocalDateTime createdDate;
   
    @LastModifiedDate  
    private LocalDateTime lastModifiedDate;
   
    @CreatedBy  
    @Column(updatable = false) 
    private String createdBy;
    
    @LastModifiedBy    
    private String lastModifiedBy;

    
}

@EntityListeners(AuditingEntityListener.class) 

 귀찮으면...xml 파일로 설정하면 된다.

META-INF / orm.xml

<?xml version=“1.0” encoding="UTF-8”?>
<entity-mappings xmlns=“http://xmlns.jcp.org/xml/ns/persistence/orm”
                 xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”  
                 xsi:schemaLocation=“http://xmlns.jcp.org/xml/ns/persistence/ orm http://xmlns.jcp.org/xml/ns/persistence/orm_2_2.xsd”  
                 version=“2.2">
    <persistence-unit-metadata>   
    <persistence-unit-defaults>        
    <entity-listeners>          
    <entity-listener class="org.springframework.data.jpa.domain.support.AuditingEntityListener”/>       
    </entity-listeners>    
    </persistence-unit-defaults>  
    </persistence-unit-metadata>  
    </entity-mappings>


 

* Web 확장 - 도메인 클래스 컨버터 

  : 조회용으로만 사용하기 깊게 들어가면 JPA를 잘 알아야됨

 

* Web 확장 - 페이징과 정렬

 

'Web > JPA' 카테고리의 다른 글

Spring Data JPA 페이징  (0) 2020.02.17
API 고급( 지연로딩과 조회성능 최적화)  (0) 2020.02.13
고급매핑  (0) 2020.02.03
다양한 연관관계 매핑  (0) 2020.02.02
연관관계 매핑 기초  (0) 2020.02.01