java, spring

[Spring] 게시물의 삭제와 첨부파일 삭제

isaac.kim 2021. 8. 30. 23:50
728x90
반응형

[Spring] 게시물의 삭제와 첨부파일 삭제

이전 글

2021.08.30 - [Spring] - [Spring] 게시물의 조회와 첨부파일 보여주기

2021.08.29 - [Spring] - [Spring] 게시물에 첨부파일 등록하기 - 2 -

2021.08.29 - [Spring] - [Spring] 게시물에 첨부파일 등록하기 - 1 -

2021.08.28 - [Spring] - [Spring] 첨부파일 삭제

2021.08.28 - [Spring] - [Spring] 원본 이미지 보여주기

 

게시물 삭제할 때는 게시물에 포함된 첨부파일 역시 삭제해야 합니다.


첨부파일 삭제 처리

첨부파일 관련 SQL은 BoardAttachMapper 인터페이스와 XML 파일에 작성되었으므로 이를 먼저 처리합니다.

 

BoardAttachMapper 인터페이스

BoardAttachMapper.xml의 일부


BoardServiceImpl의 변경

BoardServiceImpl은 첨부파일 삭제와 실제 게시물의 삭제가 같이 처리되도록 트랜잭션 하에서 BoardAttachMapper의 deleteAll( )을 호출하도록 수정합니다.

 

BoardServiceImpl 클래스의 일부


BoardController의 파일 삭제

BoardController는 DB의 삭제를 먼저 호출하고, 이후 파일을 삭제 합니다. 다만 파일을 삭제하기 위해 해당 게시물의 첨부파일 목록이 필요합니다.

 

1. 해당 게시물의 첨부파일 정보를 미리 준비

2. DB 상에서 해당 게시물과 첨부파일 데이터 삭제

3. 첨부파일 목록을 이용해서 해당 폴더에서 썸네일 이미지와 일반 파일 삭제

 

Criteria 수정

게시물의 삭제 후에 페이지 번호나 검색 조건을 유지하면서 이동하기 위해선 'redirect'에 필요한 파라미터들을 매번 추가해야 하는 불편함이 있습니다. 이는 Criteria에서 처리할 수 있도록 이미 작성되어 있는지 확인합니다.

UriComponentsBuilder는 브라우저에서 GET 방식 등의 파라미터 전송에 사용되는 문자열(쿼리스트링(query string))을 손쉽게 처리할 수 있는 클래스입니다.

 

파일 삭제 처리

파일 삭제는 BoardController에 deleteFiles( )라는 메서드를 추가해서 처리하도록 합니다. deleteFiles( )는 java.nio.file 패키지의 Path를 이용해서 처리합니다.

 

BoardController 클래스 deleteFiles( ) 메서드

BoardController 클래스의 일부

BoardController의 remove( )는 삭제 전에 먼저 해당 게시물의 첨부파일 목록을 확보합니다. 이후에 데이터베이스에서 게시물과 첨부파일 데이터를 삭제합니다. 만일 삭제에 성공했다면 실제 파일의 삭제를 시도합니다.

 

게시물 삭제 테스트

게시물 삭제 전 / 후

파일이 함께 삭제되는 것을 확인할 수 있습니다.


오늘은 게시물 삭제와 첨부파일 삭제에 대해 알아보았습니다.

728x90
반응형