[component] attach file model
- 첨부 파일 모델 설계 시, 파일 정보 저장 테이블과 도메인 엔티티(예: 게시판) 간의 관계를 고려해야 함 🤔
- 게시물과 첨부 파일 간의 다대다 관계를 해소하기 위해 중간 테이블을 사용할 수 있음 🔗
- 중간 테이블 설계 시, 대체키를 사용하여 결합도를 낮추고 첨부 파일 기능의 재사용성을 높일 수 있음 🔑
- 데이터베이스 DDL 설계 시, 도메인 엔티티 ID를 중간 테이블에 포링 키로 추가하고, 널(NULL) 허용 설정을 통해 유연성을 확보할 수 있음 🧰
- 첨부 파일 정보에는 파일 이름, 저장 경로, 용량, 확장자 등의 칼럼을 포함하여 관리 편의성을 높일 수 있음 💾
- 파일 업로드 후, 파일 테이블에 파일 정보를 저장하고, UI에서 받은 파일 ID를 활용하여 중간 테이블에 엔티티 정보와 함께 저장함 📤
- 파일 삭제 시, 첨부 파일 테이블과 중간 테이블 양쪽 모두를 삭제해야 하며, 여러 엔티티에서 공유되는 파일인지 확인하는 로직을 추가해야 함 🗑️
- 파일 목록 조회 시, 엔티티 ID를 조건으로 사용하여 그룹 테이블과 파일 테이블을 조인하여 첨부 파일 정보를 가져옴 🔎
- 스프링 시큐리티 환경에서 파일 업로드 테스트 시, CSRF 토큰 관련 설정을 고려해야 함 🛡️
- 첨부 파일 기능 자체를 독립적인 컴포넌트로 만들어 다른 프로젝트에서도 재사용할 수 있도록 설계하는 것이 목표임 🧩