본문 바로가기
  • Let's study

Spring32

[Spring] REST API 버저닝과 @RequestMapping 1. API 버저닝이란?API 버저닝(API Versioning)은 API의 버전을 관리하여 기존 클라이언트와의 하위 호환성을 유지하면서 API를 발전시키는 방법이다.API를 운영하다 보면 기존 API의 응답 형식이나 기능을 변경해야 하는 상황이 발생할 수 있다.이때 기존 클라이언트가 갑자기 동작하지 않도록 기존 버전을 유지하면서 새로운 버전을 제공할 수 있다.예를 들어 기존 API가 다음과 같다고 가정한다./api/v1/posts이후 API의 구조가 변경되었다면 기존 API를 수정하는 대신 새로운 버전을 만들 수 있다./api/v2/posts기존 클라이언트는 v1을 계속 사용하고, 새로운 클라이언트는 v2를 사용하도록 할 수 있다.2. API 버저닝이 필요한 이유API 버저닝을 사용하는 주요 이유는 다.. 2026. 8. 12.
[Spring] REST API 순환참조 해결하기 - DTO와 Record 활용 1. 양방향 연관관계에서 발생하는 순환참조JPA에서 엔티티 간 양방향 관계를 사용하면 순환참조 문제가 발생할 수 있다.예를 들어 Post와 Comment가 다음과 같이 서로를 참조한다고 가정한다.// Post@OneToMany(mappedBy = "post")private List comments;// Comment@ManyToOneprivate Post post;Post를 JSON으로 변환하면 Post 안의 comments를 조회하게 된다.그런데 Comment에는 다시 post가 존재한다.Post └─ comments └─ Comment └─ post └─ comments └─ Comment .... 2026. 8. 12.
[Spring] Java Record란? DTO를 간결하게 만드는 방법 Spring Boot에서 데이터를 전달하기 위한 DTO를 만들다 보면 비슷한 코드가 반복되는 경우가 많다.특히 필드의 값을 변경하지 않고 데이터를 전달하기 위한 용도라면 Java의 record를 활용할 수 있다.1. Record란?record는 데이터를 간단하게 표현하기 위한 클래스이다.일반적인 DTO는 다음과 같이 작성할 수 있다.@AllArgsConstructor@Getterpublic class CommentModifyForm { @NotBlank(message = "댓글 내용을 입력해주세요.") @Size(min = 2, max = 100, message = "댓글 내용은 2글자 이상 100글자 이하로 입력해주세요.") private String content;}이를 record로.. 2026. 8. 11.
[Spring] orphanRemoval JPA에서 @OneToMany 관계를 사용하다 보면 부모 엔티티에서 자식 엔티티를 제거했을 때 자식 데이터까지 함께 삭제하고 싶은 경우가 있다.이때 사용할 수 있는 옵션이 orphanRemoval이다.1. orphanRemoval이란?orphanRemoval = true를 설정하면 부모 엔티티와의 연관관계가 끊어진 자식 엔티티를 DB에서도 삭제할 수 있다.예를 들어 하나의 게시글(Post)에 여러 개의 댓글(PostComment)이 있다고 가정한다.@Entitypublic class Post extends BaseEntity { @OneToMany( mappedBy = "post", cascade = {CascadeType.PERSIST, CascadeType.REMOVE}.. 2026. 8. 11.
[Spring] REST API란? SSR과 CSR 차이부터 JSON 응답까지 1. REST API란?API(Application Programming Interface)는 서로 다른 프로그램이 기능이나 데이터를 주고받을 수 있도록 정해놓은 인터페이스이다.웹에서는 클라이언트와 서버가 HTTP를 통해 데이터를 주고받는데, 이때 어떤 URL로 요청하고 어떤 데이터를 응답할지에 대한 규칙을 API로 정의할 수 있다.REST API에서는 데이터를 중심으로 URL과 HTTP 메서드를 설계한다.2. SSR과 CSR웹 페이지를 어디에서 렌더링하느냐에 따라 크게 SSR과 CSR로 나눌 수 있다.SSR(Server Side Rendering)SSR은 서버에서 HTML을 만들어 클라이언트에게 전달하는 방식이다.Spring Boot에서는 Thymeleaf를 이용한 방식이 대표적이다.브라우저 ↓ 요.. 2026. 8. 11.
[Spring] Validation 오류 처리하기 - BindingResult 활용 앞서 @Valid를 사용하여 게시글 작성 Form의 입력값을 검증하였다.하지만 Validation에 실패했을 때 단순히 예외가 발생하도록 두는 것보다는, 어떤 입력값이 잘못되었는지 사용자에게 알려주고 다시 Form을 보여주는 것이 더 좋은 사용자 경험을 제공할 수 있다.이번에는 BindingResult를 사용하여 Validation 오류를 직접 처리해 보았다.1. BindingResult란?@Valid를 사용하면 Validation 조건에 맞지 않는 입력값이 들어왔을 때 오류가 발생한다.이때 BindingResult를 Controller 메서드의 매개변수로 함께 사용하면 Validation 결과를 직접 확인하고 처리할 수 있다.@PostMapping("/posts/doWrite")@ResponseBody.. 2026. 8. 11.