728x90
반응형

전체 글 185

[JPA] 조건절을 포함한 일대다 페이징 최적화

[JPA] 조건절을 포함한 일대다 페이징 최적화 방법 일대다 조인에서 페치조인을 사용하면 페이징을 할 수 없습니다. 우리는 일대다에서 일(1)을 기준으로 페이징하는 것이 목적입니다. 그런데 데이터는 다(N)를 기준으로 row를 생성합니다. 그렇다면 페이징을 하기 위해서는 지연로딩으로 1+N 문제가 발생하는 것을 모르는척 해야할까요? 🤔 일대다 페치조인의 문제 일대다 페치조인을 하면 다(N)를 기준으로 데이터가 생성됩니다. Order OrderItem라고 할 때 다음과 같습니다. 우리는 Order를 기준으로 페이징을 하고 싶습니다….! 😭 조건절을 포함한 일대다 페이징 최적화 방법 목표 Item의 상품명을 조건으로 Order를 Delivery, OrderItem, Item 데이터를 함께 조회하여 페이징 되..

[스프링 + 포트원] 스프링으로 포트원 사용해서 결제 구현 하는 방법(Spring Boot, JPA, PortOne)

[스프링 + 포트원] 스프링으로 포트원 사용해서 결제 구현 하는 방법(Java, Spring Boot, JPA, PortOne) 포스팅 동기 쇼핑몰을 개발하면 결제 부분에서 어떻게 해야할지 막막한 개발자들이 있을 것 입니다. 저 또한 그랬습니다. 😭 결제를 구현하기 위해서는 각 PG사에서 제공하는 API를 사용하여 개발을 진행해야하는데, 만만한 작업이 아니라고 생각합니다… 이러한 문제를 해결하고자 포트원이라는 업체가 등장했습니다. 그런데…. 이마저도 막상 개발하다보면 어려움을 느낍니다… 그리고 구글링을 하다보면 대부분 javascript를 사용하여 구현한 예제들만 있고, Spring을 사용한 예제는 별로 없는 것 같더군요.. ㅎㅎ 저는 이러한 답답함에 조금이라도 도움을 드리고 싶어 글을 작성하게 되었습니..

0+ 스프링 2023.06.03

[스프링 Core] @Configuration를 사용하면 싱글톤을 유지할 수 있는 이유(CGLIB)

[스프링 Core] @Configuration를 사용하면 싱글톤을 유지할 수 있는 이유(CGLIB) 미리 보는 결론 @Configuration은 싱글톤을 위해서 존재합니다. @Bean만 사용해도 스프링 빈으로 등록이 가능 @Configuration을 사용하면 바이트 코드를 조작하는 CGLIB를 사용하여 클래스를 상속받는 프록시 객체를 만들어서 스프링 빈을 싱글톤으로 관리할 수 있게 해준다. 스프링 설정 정보는 반드시 @Configuration을 사용하자! @Configuration 예시 스프링 컨테이너는 기본값으로 모든 인스턴스를 싱글톤으로 관리합니다. 그런데 아래와 같은 코드를 보면 좀 이상하지 않나요? ApplicationConfig @Configuration public class Applicati..

[스프링 MVC] 어떻게 컨트롤러는 다양한 종류의 파라미터를 받아서 처리할 수 있을까? 🤔

[스프링 MVC] 어떻게 컨트롤러는 다양한 종류의 파라미터를 받아서 처리할 수 있을까? 스프링을 이용해서 개발하다보면 컨트롤러에 알맞은 어노테이션면 설정하면 알아서 요청, 응답 파라미터가 변환되는 것을 알수 있습니다. 그런데 어떻게 스프링은 알아서 척척 요청, 응답 파라미터를 변환하는 걸까요? 🤔 미리 보는 결론 RequestMappingHandlerAdapter 동작 방식 요청의 경우 @RequestBody를 처리하는 RequestResponseBodyMethodProcessor(ArgumentResolver)가 존재하고, HttpEntity를 처리하는 HttpEntityMethodProcessor(ArgumentResolver)가 있습니다. 이러한 ArgumentResolver들이 HTTP 메시지 컨..

[스프링 MVC] 서블릿 필터가 있는데 인터셉터는 왜 나온거지?

[스프링 MVC] 서블릿 필터가 있는데 인터셉터는 왜 나온거지? 먼저 보는 결론 필터와 스프링 인터셉터는 웹과 관련된 👀 공통 관심사를 해결하기 위한 기술입니다. 인터셉터와 필터는 관리되는 영역이 다릅니다. 필터는 서블릿 컨테이너에서 관리되지만, 인터셉터는 스프링 컨테이너에서 관리됩니다. 따라서 인터셉터는 스프링이 처리해주는 내용을 적용받을 수 있지만, 필터는 적용받을 수 없습니다. 가장 대표적으로 필터 기술은 스프링에 의한 예외처리가 되지 않는다는 것 입니다. 그런데 현재는 필터를 스프링 빈으로 등록할 수 있습니다. 그 이유는 여기를 참고하시면 됩니다.^^ 서블릿 필터를 어떻게 스프링 빈으로 관리할 수 있을까? [스프링 MVC] 서블릿 필터를 어떻게 스프링 빈으로 관리할 수 있을까? [스프링 MVC] ..

[스프링 MVC] 서블릿 필터 예외처리 방법

[스프링 MVC] 서블릿 필터 예외처리 방법 RestControllerAdvice로 서블릿 필터 예외처리가 안되는 이유 🥲 일반적으로 스프링을 사용하면 ControllerAdvice와 ExceptionHandler를 이용하여 예외처리를 기능을 사용합니다. (이를 통해 예외가 서블릿으로 전달되지 않고 처리됩니다.^^) @RestControllerAdvice public class BasicExceptionHandler { @ExceptionHandler(BasicException.class) public ResponseEntity basicExceptionHandle(BasicException e) { return new ResponseEntity(e.getMessage(), HttpStatus.BAD_R..

728x90
반응형