스프링(33)
-
[DB 접근 기술] JDBC 이해
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-db-1# 스프링 DB 1편 - 데이터 접근 핵심 원리 - 인프런 | 강의 백엔드 개발에 필요한 DB 데이터 접근 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 DB 접근 기술의 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., - 강의 www.inflearn.com 김영한 강사님의 인프런 강의를 수강 후 블로그에 정리해서 포스팅합니다. JDBC(Java Database Connectivity)란 JDBC(Java Database Connectivity)는 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API다. JDBC의 등장 배경 JDBC는 표준 인터페이..
2022.05.25 -
[토비의 스프링 3.1] 1.2 DAO의 분리 - 포포
1.1장에서 작성한 UserDao는 문제점이 많았다. 1.2장에서는 UserDao를 관심사별로 분리하고, 디자인 패턴(템플릿 메소드 패턴, 팩토리 메소드 패턴)에 대해서 알아보자 1.2.1 관심사의 분리 코드에서 분리해야 하는 것을 세가지 꼽자면 1) 변하는 것과 변하지 않는 것 2) 관심사 3) 공통 코드 로 기억하고 있다. 이렇게 분리한다면 변경이 일어날 때 필요한 작업이 최소화되며, 해당 변경이 다른 곳에 문제를 일으킬 가능성이 낮아진다. 그 중 관심사를 분리하는 것은 관심이 같은 것 끼리는 하나의 객체 안으로 또는 친한 객체로 모으고, 관심이 다른 것은 가능한 한 따로 분리하여 서로 영향을 주지 않도록 분리하는 것을 말한다. 이전 UserDao의 add메소드를 다시 한번 살펴보면, public v..
2022.05.24 -
[Spring] API - 컬렉션 조회(1 : N)
일대다 관계(One To Many)에서 조회하는 방법과 최적화하는 방법을 알아보자! toOne 관계와는 다르게 주의할 점이 많다. V1. 엔티티 직접 노출 V2. 엔티티를 조회해서 DTO로 변환하기 V3. 엔티티를 조회해서 DTO로 변환(fetch join 사용) V4. JPA에서 DTO로 바로 조회(1+N 쿼리) V5. JPA에서 DTO로 바로 조회(최적화로 1+1 쿼리) V6. JPA에서 DTO로 바로 조회(플랫 데이터 1쿼리) 이번 포스팅에서는 V3. 엔티티를 조회해서 DTO로 변환(fetch join 사용) 까지 알아보고, 다음 포스팅에서는 V6. JPA에서 DTO로 바로 조회(플랫 데이터 1쿼리)다루고있다. V1. 엔티티 직접 노출 먼저 Order와 OrderItem은 1:N의 관계이다. Ord..
2022.04.17 -
스프링 타입 컨버터(1) - converter, conversionService
애플리케이션을 개발하다 보면 타입을 변환해야 하는 경우가 매우매우 많다. 아래 코드를 보자. @RestController public class HelloController { @GetMapping("/hello-v1") public String helloV1(HttpServletRequest request) { String data = request.getParameter("data"); //문자 타입 조회 Integer intValue = Integer.valueOf(data); //숫자 타입으로 변경 System.out.println("intValue = " + intValue); return "ok"; } } String data = request.getParameter("data") HTTP 요..
2022.04.11 -
API 예외 처리 (1) - MediaType, ExceptionResolver
HTML을 응답으로 보내주는 경우에는 예외처리를 4xx, 5xx 등의 오류 페이지만 있다면 대부분의 문제를 해결 가능했다. 이에 대한 포스팅은 https://mr-popo.tistory.com/53?category=1004552 스프링 예외 처리와 오류 페이지 서블릿은 크게 두가지 방식으로 예외 처리를 지원한다. Exception (예외) response.sendError(HTTP 상태 코드, 오류 메시지) Exception(예외) 자바의 메인 메서드를 실행하면 main이라는 이름의 쓰레드가 실행 mr-popo.tistory.com 지금부터 API의 경우 어떻게 예외 처리를 하면 좋은지 알아보자! @Slf4j @RestController public class ApiExceptionController {..
2022.04.09 -
스프링 예외 처리와 오류 페이지
서블릿은 크게 두가지 방식으로 예외 처리를 지원한다. Exception (예외) response.sendError(HTTP 상태 코드, 오류 메시지) Exception(예외) 자바의 메인 메서드를 실행하면 main이라는 이름의 쓰레드가 실행된다. 실행 도중에 예외 처리를 하지못하고 처음 실행한 main()메서드를 넘어서 예외가 던져지면, 예외 정보를 남기고 해당 쓰레드는 종료된다. 웹 애플리케이션의 경우, 사용자 요청별로 별도의 쓰레드가 할당되고, 서블릿 컨테이너 안에서 실행된다. 애플리케이션에서 예외가 발생했는데, 어디선가 try ~ catch로 예외를 잡아서 처리하면 아무런 문제가 없다. 그런데 만약에 애플리케이션에서 예외를 잡지 못하고, 서블릿 밖으로 까지 예외가 전달되면 어떻게 동작할까? 톰캣 같..
2022.04.06