[SpringBoot] 스프링부트 + JPA를 이용한 CRUD 구현 6. 삭제 기능 만들기


🎋 js


먼저, 수정 페이지에 삭제 버튼을 넣어주자.

src/main/resources/templates/posts-update.mustache

<button type="button" class="btn btn-danger" id="btn-delete">삭제</button>

src/main/resources/static/js/app/index.js

var main = {
    init : function(){
        ...
        $('#btn-delete').on('click', function(){
            _this.delete();
        });
    },

    save : function(){
        ...
    },

    update : function(){
        ...
    },

    delete : function(){
        var id = $('#id').val();

        $.ajax({
            type: 'DELETE',
            url: '/api/posts/'+id,
            dataType: 'json',
            contentType: 'application/json; charset=utf-8'
        }).done(function(){
            alert('삭제되었습니다');
            window.location.href= '/';
        }).fail(function (error){
            alert(JSON.stringify(error))
        });
    }
};

main.init();



🎋 Service


src/main/java/com/test/spring/boot_crud/service/posts/PostsService.java

package com.test.spring.boot_crud.service.posts;

import ...

@RequiredArgsConstructor
@Service
public class PostsService {

    ...

    @Transactional
    public void delete(Long id) {
        Posts posts = postsRepository.findById(id)
                .orElseThrow(() -> new IllegalArgumentException("해당 게시글이 없습니다."));
        postsRepository.delete(posts);
    }
}



🎋 Controller


src/main/java/com/test/spring/boot_crud/web/PostsApiController.java

...
@DeleteMapping("/api/posts/{id}")
public Long delete(@PathVariable Long id) {
    postsService.delete(id);
    return id;
}
...



🎋 Public Key Retrieval is not allowed 에러


어휴 ㅋ 이젠 짜증도 안난다

application.properties로 가서 allowPublicKeyRetrieval=true를 추가해주자.

예전에 JDBC 공부했을 때 봤던 내용. -> velog-JDBC 사용하기

spring.datasource.url=jdbc:mysql://localhost:3306/boottest?useSSL=false&useUnicode=true&serverTimezone=Asia/Seoul&allowPublicKeyRetrieval=true

allowPublicKeyRetrieval=true : 8.0 이후 설정 추가해야 오류가 발생하지 않는다!!

Categories:

SpringBoot