멘토링 후 얻은 피드백 및 생각해볼 점
ERD 및 테이블 명세서 int → Long으로 바꾸기
- int, long이 아닌 Wrapper Class(Long)를 쓰는 이유는 null을 사용할 수 있기 때문
- primitive type은 기본값이 0이 되는데, id가 없을 때를 나타낼 수 없음
- Long과 Integer 중에서 Long을 쓰는 이유는 표현범위 때문
soft delete vs hard delete
- soft delete
- db에는 남겨두고 상태값만 false로 바꿈
- DB에서 삭제를 할 때 실제 Row가 삭제 되지 않으며 flag를 통한 제어 방식
- hard delete
- hard delete는 db에서도 완전히 삭제
- SQL의 명령어를 통해 DB에서 실제로 데이터가 삭제되는 방식
FK를 실무에서 잘 사용하지 않는 이유
- 성능저하
- 외래키를 사용하게 되면 데이터 생성 및 수정시 항상 무결성 검사를 하게 됨
- 개발단계에서의 용이함
- 자식 테이블에 데이터 생성시 부모 데이터에 row가 미리 생성되어 있어야 함
- 데이터 수정 및 삭제 시 데이터의 정합성 유지를 위해 데이터 수정에 순서가 필요
- 프로그램의 로직이 바뀌거나 서비스가 확장되었을 때 외래키의 제약조건때문에 에러 발생할 수 있음
그 외