데이터 베이스에 저장된 데이터는 삭제 하지 않는 것이 좋다.

차후에 발생하는 여러 가지 문제를 막기 위해 실제로는 삭제하지 않고 개발한다.

즉, 실제로는 삭제하지 않고 삭제한 것처럼 사용한다는 의미로,

삭제 여부를 확인하는 필드(BRDDELETEFLAG)를 추가하여

삭제이면 안 보이게 처리하는 방식을 사용한다.

구현 방법은 다음과 같이 Delete문을 update문으로 수정하면 된다.

즉 삭제 필드(BRDDELETEFLAG)가 N이면 사용, Y이면 삭제가 되는 것이다.

<delete id="deleteBoard2One" parameterType="String">
        UPDATE TBL_BOARD
              SET BRDDELETEFLAG='Y'
         WHERE BRDNO=#{brdno}
</delete>

Board2.xml

데이터를 이용하는 SQL문도 다음과 같이 수정해 줘야 한다.

리스트의 경우 데이터를 가져올 때

삭제 되지 않은 데이터(WHERE BRDDELETEFLAG='N')만 가져오도록 수정한다.

<select id="selectBoard2List" resultType="gu.board2.boardVO" >
        SELECT BRDNO, BRDTITLE, BRDWRITER, DATE_FORMAT(BRDDATE,'%Y-%m-%d') BRDDATE, BRDHIT
          FROM TBL_BOARD
         WHERE BRDDELETEFLAG='N'
</select>

~~ 생략 ~~
   
<update id="updateBoard2" parameterType="gu.board2.boardVO">
        UPDATE TBL_BOARD
              SET BRDTITLE=#{brdtitle}
                   , BRDWRITER=#{brdwriter}
                   , BRDMEMO=#{brdmemo}
         WHERE BRDDELETEFLAG='N'
              AND BRDNO=#{brdno}
</update>
       
<select id="selectBoard2One" parameterType="String" resultType="gu.board2.boardVO">
        SELECT BRDNO, BRDTITLE, BRDWRITER, BRDMEMO, DATE_FORMAT(BRDDATE,'%Y-%m-%d') BRDDATE
           FROM TBL_BOARD
         WHERE BRDDELETEFLAG='N'
              AND BRDNO=#{brdno}
</select>


Board2.xml

글수정과 글읽기에서도 BRDDELETEFLAG 조건을 사용해야 한다.

이상의 SQL문에서

사용자가 글을 수정하고 저장(updateBoard2) 할 때

조건절에 BRDDELETEFLAG을 사용하였다.

글 읽기에서 데이터를 가져오는 SQL(selectBoard2One)에도

조건절에서 BRDDELETEFLAG을 사용하였다.

간단하게 생각하면 리스트에서 안보이니

굳이 여기에서 처리할 필요가 없을 것 같지만

북마크 하고, 시간이 지난 뒤 다시 찾아올 수 있다.

즉 주소를 직접 입력해서 접근할 수 있고,

이때, 삭제된 데이터는 수정하거나 읽을 수 없게 해야 한다.

여기에서는 구현하지 않았지만

삭제된 데이터라는 메시지를 준다면 더욱 좋을 것이다.


'Java > 게시판 2' 카테고리의 다른 글

1. 게시판 확장 - 준비  (0) 2016.03.28
2. 게시판 확장 - 글쓰기와 수정을 하나로  (0) 2016.03.28
3. 게시판 확장 - 조회수  (5) 2016.03.28
5. 게시판 확장 - 페이징  (10) 2016.03.20

+ Recent posts