• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

Auditing 관련 질문 입니다

21.06.01 18:32 작성 조회수 293

0

글을 조회하면 조회수가 1 올라가도록 서비스를 짰는데, 문제는 조회수를 올리면서 lastModifiedDate 필드도 함께 업데이트 됩니다.

제가 원하는 동작은 글 작성자가 글을 수정했을 때만 lastModifiedDate 필드가 업데이트되는 것입니다.

이 경우에는 상속을 하지 않고 lastModifiedDate 필드를 따로 만들어 수정 메소드에서 lastModifiedDate 필드를 수정하는게 best practice 일까요?

감사합니다.

@MappedSuperclass
@Getter
@EntityListeners(AuditingEntityListener.class)
public class BaseEntity {
@CreatedDate
private LocalDateTime createdDate;

@LastModifiedDate
private LocalDateTime lastModifiedDate;

public boolean isModified() {
return !createdDate.isEqual(lastModifiedDate);
}
}
@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Post extends BaseEntity {

@Id
@GeneratedValue
@Column(name = "post_id")
private Long id;

@ManyToOne(fetch = LAZY)
@JoinColumn(name = "member_id")
private Member member;

private int views;

private String title;

@Column(length = 2000)
private String content;

public Post(Member member, String title, String content) {
this.member = member;
this.title = title;
this.content = content;
}

public void increaseViews() {
views += 1;
}
}
@Service
@RequiredArgsConstructor
@Transactional
public class PostService {

private final PostRepository postRepository;

public Post write(Post post) {
return postRepository.save(post);
}

@Transactional(readOnly = true)
public Page<Post> findAll(Pageable pageable) {
return postRepository.findAll(pageable);
}

public Post view(Long id) throws PostNotFoundException {
Post post = postRepository.findById(id).orElseThrow(() -> new PostNotFoundException("게시물을 찾을 수 없습니다."));
post.increaseViews();
return post;
}
}
public interface PostRepository extends JpaRepository<Post, Long> {

@Override
@EntityGraph(attributePaths = {"member"})
Page<Post> findAll(Pageable pageable);
}

답변 1

답변을 작성해보세요.

1

김영한님의 프로필

김영한

지식공유자

21.06.01 19:57

안녕하세요. 현도님

네 이 경우 별도로 관리하셔야 합니다.

감사합니다.

정현도님의 프로필

정현도

질문자

21.06.01 20:07

감사합니다.  ^^