실무에서 Soft Delete(isDeleted)를 선택하는 이유그리고 BaseTimeEntity에 삭제 개념을 포함시킨 설계 의도 실무에서 데이터 삭제는 단순한 CRUD 중 하나로 보기 어렵습니다.특히 운영 환경에서는 데이터가 단순한 값이 아니라 비즈니스 기록이자 자산이기 때문에“삭제”라는 행위는 항상 신중하게 다뤄져야 합니다. 이 글에서는 실무에서 Hard Delete 대신 Soft Delete(isDeleted)를 선택하는 이유와,BaseTimeEntity에 삭제 개념을 함께 포함시킨 설계 의도에 대해 구체적으로 설명해 보겠습니다. 1. Hard Delete가 실무에서 가지는 한계 개발 초기에는 다음과 같이 생각하기 쉽습니다.“삭제 기능이니까 DELETE 쿼리를 사용하면 되지 않을까?” 하지만 실..
SpringBoot
Swagger 설정으로 API 명세서 자동 생성하기이번 글에서 Spring Boot 프로젝트에서 Swagger (OpenAPI)를 설정하여 API 명세서를 자동 생성하는 방법을 소개하겠습니다. Swagger 설정은 개발자들이 API를 쉽게 이해하고 사용할 수 있도록 도와주는 중요한 도구입니다! 0. 프로젝트 생성 시 의존성 추가Spring Boot 프로젝트 생성 시, 필수적으로 추가하거나 사용 목적에 따라 선택적으로 추가하곤 합니다!앞선 글에서 프로젝트 의존성에 대한 내용을 작성해놓았지만, Swagger에 대한 Dependency만 보자면 다음과 같습니다! // Swagger implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui..
애플리케이션을 개발하다 보면 예외 처리는 필수적인 요소입니다.특히 Spring Boot와 같은 대규모 프레임워크에서는 예외 처리의 일관성과 유지보수성이 중요한데요.이번 포스트에서는 Spring Boot에서 ErrorCode, ErrorResponse, ServiceException, GlobalExceptionHandler를 사용해 전역 예외 처리 시스템을 구축하는 방법을 단계별로 알아보겠습니다. 1. 에러 처리 시스템 구축 : ErrorCode애플리케이션의 예외 처리를 표준화하고 일관되게 관리하기 위해 ErrorCode라는 열거형(enum) 클래스를 생성합니다. 이를 통해 HTTP 상태 코드, 에러 코드, 에러 메시지를 한 곳에서 정의하고 사용할 수 있습니다.@Getter@AllArgsConstruc..