개발놀이터
AuditorAware 본문
@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 |