soft delete 방식으로 데이터를 삭제할 때 직접 삭제하는 것이 아니라, delete_date에 삭제 시간을 넣어준다. 조회를 할 때, delete_date = Null 인 것만 뽑아오면 된다.
이렇게 하는 이유는 유저가 작성한 것을 일부 기간동안 보존해야 될 수도 있을 경우를 생각해서 적용해 보았다.
created_date는
@JsonFormat(shape = JsonFormat.Shape.*STRING*, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Seoul")
을 통해 한국시간으로 적용했지만,
deleted_date은
@SQLDelete(sql = "UPDATE posts SET deleted_date = CURRENT_TIMESTAMP where post_id = ?")
으로 한국시간을 적용할 수가 없다. 그래서 삭제시간이 실제 삭제시간보다 9시간 늦게 나타난다.
게시글 관련 데이터
댓글 관련 데이터
게시글이 사라진다면 게시글에 달린 댓글도 사라지게하는 것이 목표였기에 동시에 사라지게하는 것을 성공했지만, 실제 삭제시간과 db에 저장된 삭제시간의 오차를 없애야 했다.
mysql의 db서버를 서울에 있는 서버로 바꾸어준다.
db 서버를 ec2에서 띄우다 보니 표준시간대에 맞추어 db 시스템 시간대가 적용된 것 같다.
set time_zone='Asia/Seoul';
실행set @@global.time_zone='Asia/Seoul';
실행SELECT *NOW*(), @@system_time_zone AS SystemTimeZone, @@GLOBAL.time_zone AS MyTimeZone, @@session.time_zone AS SessionTimeZone;
참고
https://mysqldba.tistory.com/279
https://insight-bgh.tistory.com/246