• Web_ project 진행_5 : Spring DB 게시글 삭제 (두 개의 테이블)

    2021. 11. 4.

    by. KAEY

    *해당 프로젝트 기술은 메아리 프로젝트에서 제가 담당했었던 기능 분야 쪽만 기술 합니다!! 이외엔 팀원들과의 합작입니다.


    게시글 삭제 역시 Param의 형식으로 ArticleNO을 받아오고 해당 값을 이용해서 DB의 있는 값들을 삭제한다.

     

     

    com.mySpring.myapp.sns.controller.removeArticle

    try {
           snsService.removeArticle(articleNO);
           File destDir = new File(ARTICLE_IMAGE_REPO+"/"+articleNO);
           FileUtils.deleteDirectory(destDir);
           
           message = "<script>";
           message += " location.href='"+request.getContextPath()+"/sns/new';";
           message +=" </script>";
            resEnt = new ResponseEntity(message, responseHeaders, HttpStatus.CREATED);
               
        }catch(Exception e) {
           message = "<script>";
           message += " alert('dont remove this article.');";
           message += " location.href='"+request.getContextPath()+"/sns/new';";
           message +=" </script>";
            resEnt = new ResponseEntity(message, responseHeaders, HttpStatus.CREATED);
            e.printStackTrace();
        }

    게시글 번호 값으로 사용하여 snsService의 remove를 실행하게 해준다.

    그 후로는 기타 처리 과정 (삭제 후 페이지 이동, 서버 내 파일 삭제)이다.

     

     

     

    com.mySpring.myapp.sns.service.removeArticle

    	@Override
    	   public void removeArticle(int articleNO) throws Exception {
    	      snsDAO.deleteArticleImage(articleNO);
    	      snsDAO.deleteArticle(articleNO);
    	   }

    해당 게시글은 image를 담아놓는 테이블과 게시글 내용을 담아 놓는 테이블을 두 개 사용하므로 두 개를 동시에 삭제할 수 있도록 한다. 단, 해당 테이블에선 image가 article에 자식 요소로 사용되고 있었으므로, 테이블 삭제할 때 규칙에 따라서 자식을 먼저 삭제한 후, 게시글을 삭제하면 된다.

     

     

     

    com.mySpring.myapp.sns.dao.deleteArticle/deleteArticleImage

    	@Override
    	   public void deleteArticle(int sns_articleNO) throws DataAccessException {
    	      sqlSession.delete("mapper.sns.deleteArticle", sns_articleNO);
    	      
    	   }
    	 @Override
    	   public void deleteArticleImage(int sns_articleNO) throws DataAccessException {
    	      sqlSession.delete("mapper.sns.deleteArticleImage", sns_articleNO);
    	   }

    이 역시 DB를 통해서 값들을 처리할 수 있도록 해서, DB의 값을 삭제하는 쿼리문을 실행하게 한다.

     

     

     


     

    댓글 (비로그인 댓글 허용하지 않습니다.)