[@Auditing을 이용한 작성자 설정 기능]
현재 매우 많은 엔티티들에 User가 연관관계를 맺고 있습니다.
일일히 서비스에서 연관관계를 맺어주는 로직을 넣기에는 귀찮습니다.
간단하게 처리하기 위해 Auditing 이용하는 방법을 제안해 봅니다.
- 일단
Auditor
처리 로직을 등록해줍니다.
@Component public class UserAuditorAware implements AuditorAware<User> { @Override public Optional<User> getCurrentAuditor() { return Optional.of(AuthUtils.getAuthUser()); }
- User 설정을 해주고 싶은 엔티티에 다음을 추가합니다.
@EntityListeners(UserAuditorAware.class) @Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) public class QuestionPost extends BaseTimeEntity implements ImageAttachable { ...
@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()); }
- User 설정을 해주고 싶은 엔티티에 다음을 추가합니다.
@EntityListeners(UserAuditorAware.class) @Entity @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) public class QuestionPost extends BaseTimeEntity implements ImageAttachable { ...
@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);