반응형
JPA Auditing
계속 사용하다가 까먹어서 글로 정리하려고 한다.
우선 Auditing 기능을 사용하려면
@EnableJpaAuditing
@SpringBootApplication
public class AdminApplication {
public static void main(String[] args) {
SpringApplication.run(AdminApplication.class, args);
}
}
을 명시해 주어야한다.
그리고 Entity 상단에는
@Data
@EntityListeners(AuditingEntityListener.class)
@Table(name = "", catalog = "", schema = "")
public class CtrlInfo {
이벤트 리스너를 통해서 AuditingEntityLisener 를 통해서 등록을 해준다.
@CreatedBy
@LastModifiedBy
@Column(name = "IPUser", nullable = true)
private String ipUser;
@CreatedDate
@LastModifiedDate
@Column(name = "IPDate", nullable = true)
private LocalDateTime ipDate;
그리고 실제 사용하고자 하는 컬럼들에 어너테이션으로 등록하면 되는데
위와 같이 CreatedBy와 LastModifedBy는 어너테이션만 등록한다고 되지는 않는다.
@EnableJpaAuditing(auditorAwareRef = "loginUserAuditorAware")
@SpringBootApplication
public class AdminApplication {
public static void main(String[] args) {
SpringApplication.run(AdminApplication.class, args);
}
}
Auditing옆에 어떤 사용자를 담을 건지 명시를 해주어야하는데
@RequiredArgsConstructor
@Component
@Slf4j
public class LoginUserAuditorAware implements AuditorAware<String> {
@Override
public Optional<String> getCurrentAuditor() {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
if(null == authentication || !authentication.isAuthenticated()) {
return null;
}
//사용자 환경에 맞게 로그인한 사용자의 정보를 불러온다.
CustomUserDetails userDetails = (CustomUserDetails)authentication.getPrincipal();
return Optional.of(userDetails.getUserId());
}
}
다음과 같이 AuditorAware을 구현하게 되면 위에 명시해준
LoginUserAuditorAware
를 통해 들어갈 수 있다.
반응형
'Spring > JPA' 카테고리의 다른 글
태태개발일지 - OneToOne (0) | 2024.11.15 |
---|---|
태태개발일지 - JPA 연관관계 (0) | 2024.11.14 |
태태개발일지(EVENT) (1) | 2023.12.04 |
태태개발일지(query method) (0) | 2023.08.21 |
태태개발일지(연관관계 JPA) (0) | 2023.08.17 |