개발놀이터

AuditorAware 본문

JPA/JPA

AuditorAware

마늘냄새폴폴 2021. 9. 23. 05:08
@Bean
public AuditingAware<String> auditorProvider() {

	return () -> {

		ServletRequestAttributes attr = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();

		String loginId = (String) attr.getRequest().getSessio().getAttribute("loginId");

		if (loginId != null) {
			return Optional.of(loginId);
		}
        	else {
			return Optional.of("Anonymous");
		}
    }
}

*JPA Auditing AuditorAware

Auditing에서 createdDate, lastModifiedDate는 @EnableJpaAuditing와 @CreatedDate, @LastModifiedDate를 이용하면 자동으로 값을 넣어준다. 하지만 @CreatedBy, @LastModifiedBy는 자동으로 값을 넣어주지 않는다. AuditorAware를 @Bean으로 스프링 빈에 올려서 직접 주입받아야 한다. 

보통 createdBy, lastmodifiedBy의 값으로 세션값을 넣는 것이 보통이다. HttpServletRequest, HttpServletResponse, HttpSession과 같은 서블릿 객체를 얻기 위해서는 RequestContextHolder에서 현재 값을 받아온다.


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

N + 1 문제 해결 join fetch vs @EntityGraph  (0) 2022.09.22
@CreatedDate, @LastModifiedDate  (0) 2022.08.23
Spring Data JPA  (0) 2021.09.23
JPA를 활용한 (XToOne) Restful API설계  (0) 2021.09.13
JPQL 중급  (0) 2021.08.26