목록Spring (15)
josolha
스프링 프로젝트를 하면서 자연스럽게 ResponseEntity 객체를 사용하여 반환을 하는데, 어쩌다가 왜 사용하게 되었을까 라는 의문을 가지게 되어 정리하게 되었다. 1.@ReponseBody 2.@RestController 3.ReponseEntity 이렇게 순서대로 설명하겠다. @ReponseBody Spring MVC에서 @Controller 어노테이션은 웹 요청과 응답을 처리하는 컨트롤러 클래스를 정의하는 데 사용된다. 하지만 @Controller만으로는 메소드의 반환값을 HTTP 응답 본문으로 직접 매핑할 수 없다. 이를 위해 @ResponseBody 어노테이션이 필요하다. @Controller public class MyController { @GetMapping("/hello") @Resp..

Jpa를 시작하게 되면서 N+1 을 조심해야 한다는 얘기를 많이 듣는다. 이미 들어는 봤지만 자세하게 설명할 수 없어서 갓영한님의 JPA 강의를 보면서 정리해봤다. N+1 문제란? 1번 조회해야할 것을 N개 종류의 데이터 각각을 추가로 조회하게 되서 총 N+1번 DB조회를 하게 되는 문제이다. 즉, JPA의 Entity 조회시 Query 한번 내부에 존재하는 다른 연관관계에 접근할 때 또 다시 한번 쿼리가 발생하는 비효율적인 상황을 말한다. 예시를 들자면, 데이터 조회 시 1번만 조회할 것을 100만개 종류의 데이터가 있어 1,000,001번 DB조회하게 되어 많은 양의 쿼리가 발생하고 성능저하를 일으킨다. 연관관계 매핑 시 ~ToMany, ~ToOne 관계 모두 N+1 문제가 일어날 수 있지만 해결하는..
Consumes와 Produces란? Spring Framework에서 @RequestMapping 또는 그 파생 어노테이션들(@GetMapping, @PostMapping 등)은 HTTP 요청을 특정 메소드에 매핑하는 데 사용된다. 이 때 consumes와 produces 속성을 사용하여, 컨트롤러가 처리할 수 있는 요청의 Content-Type과 반환할 수 있는 응답의 Content-Type을 각각 지정할 수 있다. Consumes 용도: 컨트롤러가 처리할 수 있는 요청 본문의 미디어 타입을 지정한다. 디폴트 값: 지정되지 않을 경우, 모든 Content-Type의 요청을 수락한다. 사용 예시: @PostMapping(path = "/submitData", consumes = MediaType.APP..

맨날 사용만해봤지 JPA, Hibernate, Spring Data JPA 개념들이 혼동이와서,정확하게 알아보려고 한다. JPA JPA는 Java Persistence API의 약자로, 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스이다. 여기서 중요하게 여겨야 할 부분은, JPA는 말 그대로 인터페이스라는 점이다. JPA는 특정 기능을 하는 라이브러리가 아니다. 마치 일반적인 백엔드 API가 클라이언트가 어떻게 서버를 사용해야 하는지를 정의한 것처럼, JPA 역시 자바 어플리케이션에서 관계형 데이터베이스를 어떻게 사용해야 하는지를 정의하는 한 방법일 뿐이다. 실제로 JPA를 정의한 javax.persistence 패키지의 대부분은 interface , enum , Excep..