회원탈퇴 관련 코드를 작성하는 과정에서
해당 회원과 관련된 모든 테이블의 데이터까지 같이 삭제해야 하는 경우가 생겼다
* xml에서 한번에 처리할 수 있는 방법으로 적용
1) xml에 여러 개의 DELETE문을 기입해 주고
2) DELETE문 하나 안에서도 JOIN으로 처리해야 하는 경우
JOIN 된 테이블 데이터를 모두 삭제해 주는 방법을 적용시켜 보았다
user.xml
<delete id="deleteUserData">
DELETE tpsh, tu
FROM tb_user tu
LEFT JOIN tb_push_send_hist tpsh
ON tu.USER_ID = tpsh.RECV_USER_ID
WHERE tu.USER_SN = #{userSn};
DELETE FROM tb_user_noti
WHERE USER_SN = #{userSn};
DELETE FROM tb_user_setup
WHERE USER_SN = #{userSn};
</delete>
UserDAO.java
int deleteUserData(@Param("userSn") String userSn);
UserServiceImpl.java
int deleteUserCnt = userDAO.deleteUserData(delUserVO);
if(deleteUserCnt < 1) {
throw new InternalServerException("회원탈퇴 실패");
}
return 값 문제점과 해결방안
삭제 후 리턴 값 deleteUserCnt을 받아오는 과정에서 삭제된 데이터가 있음에도 불구하고
0이 리턴되는 상황이 생겨 여러 가지 해본 결과
처음 실행되는 DELETE문에서의 결괏값에 따라 최종 return이 되는 것을 파악했다
즉, 무조건 데이터가 삭제되어야 하는 tb_user를 맨 위에 위치시키면 내가 원하는 결괏값을 받을 수 있다
'Programming > Back-End' 카테고리의 다른 글
[Spring] 스프링 프레임워크에서 Thymeleaf 사용하기(XML 설정) (46) | 2023.09.19 |
---|---|
[Java/자바] Base64.Encoder.withoutpadding 적용하기 (안드로이드 NO_PADDING 참고) (38) | 2023.09.19 |
java.net.BindException "Address alredy in use: bind" 해결/특정 포트 죽이는 방법 (37) | 2023.09.13 |
[Java/자바] JWT 토큰 발급 및 JWT/JWK 검증 처리 방법 정리 (1) | 2023.09.01 |
[SpringBoot] Embedded Tomcat의 catalina.jar (0) | 2023.09.01 |