728x90
반응형

Hibernate/SpringDataJPA 3

[JPA] Auditing과 MappedSuperClass(상속)

Auditing JPA에서 'Audit'는 감시하다 라는 뜻으로 사용된다. 각 데이터 마다 '누가', '언제' 데이터를 생성하고 변경했는지 감시한다는 의미이다. 엔티티 클래스에는 공통적으로 들어가는 필드가 있다. 예를들어 '등록일자'와 '수정일자' 같은 것이다. 대표적으로 가장 많이 사용되는 필드를 나열해보면 다음과 같다. 등록자 등록일자 수정자 수정일자 매번 엔티티를 생성하거나 변경헐 때마다 값을 주입해야 하는 번거로움이 있다. 이 같은 번거로움을 해소하기 위해 Spring Data JPA에서는 이러한 값을 자동으로 넣어주는 기능을 제공한다. 각각의 기능에 대한 어노테이션은 아래와 같다. 등록자 @CreateBy 등록일자 @CreateDate 수정자 @LastModifiedBy 수정일자 @LastMod..

SpringDataJPA 쿼리메소드 N+1 LeftOuterJoin걸기 @EntityGraph

fetch정책과 N+1 JPA 기본 메소드인 findAll()의 경우 fetch정책이 LAZY인경우 N+1이 발생하는데, +1과 관련된 연관 엔티티를 조회하는 시점에 +1이 발생한다. (연관 엔티티를 따로 조회하지 않으면 연관관계의 주인이 되는 엔터티에 대한 조회만 발생) but 쿼리메소드의 경우 fetch정책과 관계없이 N+1이 발생하는데, +1과 관련된 연관 엔터티를 함께 조회하지 않더라도 +1이 발생한다. (연관관계의 주인이 되는 엔터티만 조회하더라도 연관 엔터티를 함께 조회한다) N+1현상으로 인해 쿼리가 각각 조회되는것을 LEFT JOIN으로 한번에 조회하는 방법이 있다. 그것은 바로 FETCH JOIN이다. FETCH JOIN 기본 메소드의 경우 연관관계 어노테이션 fetch옵션을 EAGER로..

SpringDataJPA Query문 콘솔 출력 색상 및 줄개행, 파라미터 식별 등 가독성 설정

[build.gradle 파일] 코드 추가 implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.8' [ application.properties 파일 ] 코드 추가 # JPA의 구현체인 Hibernate가 동작하면서 발생한 SQL의 가독성을 높여준다. #spring.jpa.properties.hibernate.show_sql=true spring.jpa.properties.hibernate.format_sql=true spring.jpa.properties.hibernate.highlight_sql=true spring.jpa.properties.hibernate.validator.apply_to_ddl=false [ P6SpyF..