Conversation
kimdevv
left a comment
There was a problem hiding this comment.
좋은 글이네요. Soft Delete에 대해 다시 한 번 정리할 수 있는 시간이었습니다.
Level4-technical-writing.md
Outdated
|
|
||
| 데이터를 물리적으로 삭제하는 것에는 한계가 있었습니다. | ||
|
|
||
| - GDPR, 개인정보보호법 등 법적 요구사항 |
There was a problem hiding this comment.
아래 불릿 포인트와 같은 형식으로 맞추면 좋을 것 같아요!
- 법적 요구: GDPR, 개인정보보호법 등
| @Entity | ||
| @Table(name = "users") | ||
| public class User { | ||
| @Id |
There was a problem hiding this comment.
다른 코드 포매팅과 일관될 수 있게 한 칸 개행 추가하면 좋을 것 같아요!
Level4-technical-writing.md
Outdated
| @SQLDelete 는 플래그로 LocalDateTime 사용이 불가능 하다는 단점과 하나의 컬럼만 사용가능한 단점이 있는 @SoftDelete와 달리, 실행될 쿼리문을 직접 정의해줌으로써 2개 이상의 플래그 사용이 | ||
| 가능합니다. | ||
| <br> | ||
| @SQLRestriction 어노테이션의 속성으로 조회시 조건을 지정할 수 있습니다. |
There was a problem hiding this comment.
@SQLRestriction 어노테이션을 간단하게 위에서 설명해 주시면 좋을 것 같아요. 이게 아직은 어떤 역할을 하는지 직관적으로 이해가 안 돼서요!
Level4-technical-writing.md
Outdated
| ## 4. @Where Deprecated 주의사항 | ||
|
|
||
| Hibernate 6.3부터 @Where 어노테이션이 Deprecated되었습니다. 따라서 | ||
| 반드시 @SQLRestriction을 사용해야 합니다. |
There was a problem hiding this comment.
위에서는 @Where 어노테이션에 대해 아무런 설명이 없었는데 갑자기 Deprecated 되었다고 해서 조금 갑작스러웠어요! 위에서 언급하지 않은 부분이다보니 해당 문단이 필요할까? 싶었습니다!
Level4-technical-writing.md
Outdated
|
|
||
| 선택 이유 | ||
|
|
||
| - 두개의 삭제 플래그(isDeleted, deletedAt)를 사용해야 하는 상황 |
There was a problem hiding this comment.
왜 두 개의 삭제 플래그가 필요했었는지도 함께 안내되면 좋을 것 같아요.
Level4-technical-writing.md
Outdated
| - 백엔드 개발자(Java, Spring, JPA 환경) | ||
| - 데이터베이스 개발자 |
There was a problem hiding this comment.
여기서 지정하고있는 대상독자의 범위가 넓은 것 같아요! 글의 본문은 이론보다 구현에 집중하고 있으니까 소프트 딜리트를 처음 접하는 백엔드(Spring, JPA) 개발자로 합치면 좋을 것 같아요
| ```java | ||
| userRepeository.deleteById(userId); | ||
| ``` | ||
|
|
||
| 이 메서드를 실행하면 회원은 데이터베이스에서 제거됩니다. |
There was a problem hiding this comment.
코드를 시작하기 전에 userRepeository.deleteById(userId); 을 Java 기반 SpringDataJPA로 작성한 코드라고 명시해주면 맥락을 파악하기 좋을 것 같아요
jye326
left a comment
There was a problem hiding this comment.
좋은 글이군요! 독자 입장에서 자연스럽게 읽히도록 개선 사항을 몇 개 짚어봤습니다~
| <br> | ||
| 하지만 만약 탈퇴한 계정을 복구하고싶다면 어떻게 해야 할까요? | ||
| <br> | ||
| 다음과 같은 문제가 발생합니다. | ||
|
|
||
| - 실수로 삭제를 했다면 복구할 수 없다. | ||
| - 누가, 언제, 왜 삭제했는지 알 수 없다. | ||
| - 삭제된 사용자의 주문 내역이 외래키 제약으로 함께 삭제된다면 |
There was a problem hiding this comment.
문장 흐름이 부자연스러운 것 같아요
- 탈퇴한 계정을 복구하고 싶다면 어떻게 해야 할지 물어봤는데 갑자기 문제가 발생한다고 함.
- '삭제된 사용자의 주문 내역이 외래키 제약으로 함께 삭제된다면' 뒷말이 누락된 느낌이 든다
Level4-technical-writing.md
Outdated
| 1. 하드 딜리트의 한계 | ||
| 2. 소프트 딜리트란 무엇인가? |
There was a problem hiding this comment.
- Hard Delete, Soft Delete 처럼 영문으로 명시하거나
- 물리 삭제, 의미 삭제 등의 한글 번역으로 명시하는 것이 좋을 것 같아요
|
|
||
| @SoftDelete는 디폴트로 boolean 타입의 deleted 필드가 추가되며, 엔티티 내부에 자바코드로 동일한 이름의 필드를 지정할 수 없습니다. | ||
| <br> | ||
| deleted 외에도 필드명은 자유롭게 커스텀이 가능하고, boolean 타입이 싫을 경우 converter를 사용할 수 있습니다. |
Level4-technical-writing.md
Outdated
| 만약, @Where에서 @SQLRestriction으로 마이그레이션을 해야 한다면 | ||
| <br> | ||
| @Where와 @SQLRestriction의 문법은 동일합니다. | ||
| <br> | ||
| 그래서 단순 어노테이션 이름만 변경하면 됩니다. |
Level4-technical-writing.md
Outdated
|
|
||
| 선택 이유 | ||
|
|
||
| - 두개의 삭제 플래그(isDeleted, deletedAt)를 사용해야 하는 상황 |
No description provided.