분류 전체보기(250)
-
[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 -
[Spring] 빈(Bean) 생명주기 콜백+ 빈 의존관계 주입 후 콜백
데이터베이스 커넥션 풀이나, 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면, 객체의 초기화와 종료 작업이 필요하다. 스프링을 통해 이러한 초기화 작업과 종료 작업을 어떻게 진행하는지 예제로 알아보았다. 간단하게 외부 네트워크에 미리 연결하는 객체를 하나 생성한다고 가정해보자. 이 NetworkClient 는 애플리케이션 시작 시점에 connect() 를 호출해서 연결을 맺어두어야 하고, 애플리케이션이 종료되면 disConnect() 를 호출해서 연결을 끊어야 한다. 현재는 생성자에서 connect()를 호출하여 연결을 맺는다. public class NetworkClient { private String url; p..
2022.04.16 -
[IntelliJ]Spring 프로젝트 생성 후 Cannot resolve Symbol 'String'
https://start.spring.io/ 에서 프로젝트 생성 후, Application 클래스의 main 메서드를 실행하여 프로젝트 설치가 잘 되었는지 확인하려고 하였다. 그런데, Cannot resolve Symbol 'String' 이라는 오류가 발생했다. Build를 눌러보았지만 sdk가 지정되지 않았다는 경고메시지를 알려주며 실행되지 않았다. 검색해본 결과 IntelliJ가 알려준 메시지와 동일하게 이 오류는 SDK가 지정되어있지 않아 발생한 오류였다. file>Project Structure>Project Settings에서 SDK를 사용하고 있는 JDK로 변경하니 해결되었다. 변경하기 전에는 Module SDK is not defined였다.
2022.04.15 -
백준 2170: 선 긋기
문제 매우 큰 도화지에 자를 대고 선을 그으려고 한다. 선을 그을 때에는 자의 한 점에서 다른 한 점까지 긋게 된다. 선을 그을 때에는 이미 선이 있는 위치에 겹쳐서 그릴 수도 있는데, 여러 번 그은 곳과 한 번 그은 곳의 차이를 구별할 수 없다고 하자. 이와 같은 식으로 선을 그었을 때, 그려진 선(들)의 총 길이를 구하는 프로그램을 작성하시오. 선이 여러 번 그려진 곳은 한 번씩만 계산한다. 입력 첫째 줄에 선을 그은 횟수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 다음 N개의 줄에는 선을 그을 때 선택한 두 점의 위치 x, y(-1,000,000,000 ≤ x < y ≤ 1,000,000,000)가 주어진다. 출력 첫째 줄에 그은 선의 총 길이를 출력한다. 내제출 package com.com..
2022.04.14 -
스프링 타입 컨버터(2) - Formatter
스프링 타입 컨버터(1) 포스팅에서 보았던 Converter 는 입력과 출력 타입에 제한이 없는, 범용 타입 변환 기능을 제공한다. 일반적인 웹 애플리케이션 환경을 생각해보자. 불린 타입을 숫자로 바꾸는 것 같은 범용 기능 보다는 개발자 입장에서는 문자를 다른 타입으로 변환하거나, 다른 타입을 문자로 변환하는 상황이 대부분이다. 예를들면, 화면에 숫자를 출력해야 하는데, Integer String 출력 시점에 숫자 1000 문자 "1,000" 이렇게 1000 단위에 쉼표를 넣어서 출력하거나, 또는 "1,000" 라는 문자를 1000 이라는 숫자로 변경해야 하는 경우. 날짜 객체를 문자인 "2021-01-01 10:50:11" 와 같이 출력하거나 또는 그 반대의 상황이 있겠다. 이렇게 객체를 특정한 포멧에..
2022.04.11 -
스프링 타입 컨버터(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