CRUD 중 조회(R)를 제외한 부분에서 @Transactional이 필요하다 생각했는데 코드를 작성하고 Update에는 왜 별도로 @Transactional를 작성해줘야하고 나머지 Create, Delete에는 필요가 없는가 중간에 의문이 생겼는데, save, delete를 simpleJpaRepository에서 받아와서 사용하니 그 안에 있다는 것을 알게 되었다.
다른 사람 코드도 몇번 둘러 보았는데 참고할 사항이 꽤 많았다.
@Valid : 해당 객체에 적용된 유효성 검사(annotation-based validation)가 수행된다.
@RestControllerAdvice는 Spring Framework에서 사용되는 어노테이션으로, 전역적으로 예외 처리를 담당하는 클래스를 지정합니다. 이 어노테이션이 붙은 클래스는 여러 컨트롤러에서 발생하는 예외를 일관된 방식으로 처리할 수 있게 해줍니다.
@ExceptionHandler : Spring Framework에서 사용되는 어노테이션으로, 특정 예외가 발생했을 때 해당 예외를 처리하는 메서드를 지정합니다. 이 어노테이션이 적용된 메서드는 특정 예외에 대한 처리 로직을 정의할 수 있습니다.
- 예외처리에서 Service부분에서 try-catch사용이 마음에 안들었는데 좋은 방법인 것 같다.
Exception을 반환하기 위한 Dto를 별도 생성
위와 같은 적용을 한 사람들을 제외하더라도 같은 강의를 들었는데 정말 사람이 짜는 코드는 다 다른것 같다.