HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🏠
2차 팀 프로젝트: 오늘의 집
/
제안: Auditing 이용해서 User정보 등록

제안: Auditing 이용해서 User정보 등록

완료 여부
완료
발의자
[@Auditing을 이용한 작성자 설정 기능]
현재 매우 많은 엔티티들에 User가 연관관계를 맺고 있습니다.
일일히 서비스에서 연관관계를 맺어주는 로직을 넣기에는 귀찮습니다.
간단하게 처리하기 위해 Auditing 이용하는 방법을 제안해 봅니다.
  • 일단 Auditor 처리 로직을 등록해줍니다.
    • @Component public class UserAuditorAware implements AuditorAware<User> {   @Override   public Optional<User> getCurrentAuditor() {      return Optional.of(AuthUtils.getAuthUser());   }
    • 해당 Auditor 작동시에 AuthUtils에서 바로 User 정보를 꺼내 옵니다.
  • User 설정을 해주고 싶은 엔티티에 다음을 추가합니다.
    • @EntityListeners(UserAuditorAware.class) @Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) public class QuestionPost extends BaseTimeEntity implements ImageAttachable { ...
    • 우선 EntityListener로 아까 만든 AuditorAware 추가합니다.
    • @CreatedBy @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "author_id") private User author;
    • 연관관계 설정해주고, @CreatedBy 애노테이션 붙여줍니다.
  • 이제, 엔티티 생성 시점에 알아서 User 정보를 등록해줍니다!
    • /* insert com.prgrms.ohouse.domain.community.model.question.QuestionPost */ insert into question_post (created_at, updated_at, author_id, content, id) values ('2022-06-30T19:10:45.512+0900', '2022-06-30T19:10:45.512+0900', 1, 'content{{image}}content1{{image}}', 2);
    • 정상 작동을 확인 가능합니다.
[@Auditing을 이용한 작성자 설정 기능]
현재 매우 많은 엔티티들에 User가 연관관계를 맺고 있습니다.
일일히 서비스에서 연관관계를 맺어주는 로직을 넣기에는 귀찮습니다.
간단하게 처리하기 위해 Auditing 이용하는 방법을 제안해 봅니다.
  • 일단 Auditor 처리 로직을 등록해줍니다.
    • @Component public class UserAuditorAware implements AuditorAware<User> {   @Override   public Optional<User> getCurrentAuditor() {      return Optional.of(AuthUtils.getAuthUser());   }
    • 해당 Auditor 작동시에 AuthUtils에서 바로 User 정보를 꺼내 옵니다.
  • User 설정을 해주고 싶은 엔티티에 다음을 추가합니다.
    • @EntityListeners(UserAuditorAware.class) @Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) public class QuestionPost extends BaseTimeEntity implements ImageAttachable { ...
    • 우선 EntityListener로 아까 만든 AuditorAware 추가합니다.
    • @CreatedBy @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "author_id") private User author;
    • 연관관계 설정해주고, @CreatedBy 애노테이션 붙여줍니다.
  • 이제, 엔티티 생성 시점에 알아서 User 정보를 등록해줍니다!
    • /* insert com.prgrms.ohouse.domain.community.model.question.QuestionPost */ insert into question_post (created_at, updated_at, author_id, content, id) values ('2022-06-30T19:10:45.512+0900', '2022-06-30T19:10:45.512+0900', 1, 'content{{image}}content1{{image}}', 2);
    • 정상 작동을 확인 가능합니다.