Querydsl - Querydsl 프로젝션으로 DTO 조회
·
SQL
QuerydslQuerydsl은 JPA, Hibernate 등 다양한 ORM 프레임워크와 호환되며, 개체지향 쿼리 언어를 사용하여 타입 세이프한 쿼리를 작성할 수 있는 라이브러리이다. 프로젝션(Projection)프로젝션은 select절에서 사용되며 쿼리 결과를 원하는 개체나 값으로 변환해주는 기능을 제공한다. Queyrdsl에서 프로젝션을 사용하는 방법프로젝션을 사용해서 DTO를 조회하는 방법은 크게 4가지 방법이 있다.@QueryProjectionProjections.bean()Projections.constructor()Projections.fields() @QueryProjection@QueryProjection은 생성자에 생성자 방식으로 프로젝션을 수행한다. 이 방식은 컴파일 시에 생성자를 만들..
Spring - 내 로컬에서만 java.io.FileNotFoundException이 발생할 때 원인과 해결 방법
·
나의 에러 일지
배경프로젝트를 진행하다가 팀원이 풀리퀘스트한 코드를 내 로컬로 가져왔다. 그리고 실행했더니 아래와 같은 에러가 났다.Caused by: java.io.FileNotFoundException: class path resource [파일 경로] cannot be opened because it does not exist 원인보통 java.io.FileNotFoundException은 프로그램에서 찾으려는 파일이 없거나, 파일의 경로가 잘못되어서 발생하는 예외이지만, 이번에는 팀원이 테스트 검증까지 마친 코드를 푸시했고, 내 로컬에서만 발생하는 문제였다. 아마 내 로컬에서 빌드가 꼬인 상태인 것 같았다. 해결 시도(실패)첫 번째로 시도한 방법은 gradle clean 으로 빌드 디렉토리에 생성된 내용을 한 번..
MySQL - 프로그래머스 157341. 대여 기록이 존재하는 자동차 리스트 구하기 (MONTH( ) 함수)
·
SQL
문제 링크 문제 설명 다음은 어느 자동차 대여 회사에서 대여 중인 자동차들의 정보를 담은 CAR_RENTAL_COMPANY_CAR 테이블과 자동차 대여 기록 정보를 담은 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블입니다. CAR_RENTAL_COMPANY_CAR 테이블은 아래와 같은 구조로 되어있으며, CAR_ID, CAR_TYPE, DAILY_FEE, OPTIONS 는 각각 자동차 ID, 자동차 종류, 일일 대여 요금(원), 자동차 옵션 리스트를 나타냅니다. Column name Type Nullable CAR_ID INTEGER FALSE CAR_TYPE VARCHAR(255) FALSE DAILY_FEE INTEGER FALSE OPTIONS VARCHAR(255) FALSE..
면접을 위한 CS 전공지식 노트 - MVC, MVP, MVVM 패턴
·
책 '면접을 위한 CS 전공지식 노트'를 읽고 정리한 내용입니다. MVC 패턴 MVC 패턴은 모델(Model), 뷰(View), 컨트롤러(Controller)로 이루어진 디자인 패턴이다. 애플리케이션의 구성 요소를 세 가지 역할로 구분하여 개발 프로세스에서 각각의 구성 요소에만 집중해서 개발할 수 있다. 사용자의 입력은 Controller로 들어간다. 웹 개발에서는 Controller가 웹 요청을 처리하고, Model에서 데이터를 가져와 필요한 처리를 수행한 후, View에 결과를 전달해서 웹 페이지를 렌더링 한다. View - Controller 관계는 OnetToMany이며 간혹 ManyToMany 방식이 된다. 그래서 Controller는 원하는 View를 선택 가능하지만 View Controlle..
면접을 위한 CS 전공지식 노트 - 이터레이터 패턴
·
책 '면접을 위한 CS 전공지식 노트'를 읽고 정리한 내용입니다. 이터레이터 패턴 이터레이터 패턴은 기본 구현을 노출하지 않고 컬렉션의 요소에 액세스하는 방법을 제공하는 패턴이다. 이를 통해 순회할 수 있는 여러 가지 자료형의 구조와는 상관없이 어터레이터라는 하나의 인터페이스로 순회가 가능하다. Java에서의 이터레이터 패턴 import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class IteratorExample { public static void main(String[] args) { List list = new ArrayList(); list.add("apple"); list.add("banana"..
면접을 위한 CS 전공지식 노트 - 프록시 패턴과 프록시 서버
·
책 '면접을 위한 CS 전공지식 노트'를 읽고 정리한 내용입니다. 프록시 패턴 프록시 패턴(proxy pattern)은 대상 객체(subject)에 접근하기 전 그 접근에 대한 흐름을 가로채 대상 객체 앞단의 인터페이스 역할을 하는 디자인 패턴이다. 이를 통해 객체의 속성, 변환 등을 보완하며 보안, 데이터 검증, 로깅에 사용한다. 이는 프록시 객체로 쓰이기도 하지만 프록시 서버로도 활용된다. 🔥 프록시 서버에서의 캐싱 캐시 안에 정보를 담아두고, 캐시 안에 있는 정보를 요구하는 요청에 대해 다시 원격 서버에 요청하지 않고 캐시 안에 있는 데이터를 활용하는 것을 말한다. 이를 통해 불필요하게 외부와 연결하지 않기 때문에 트래픽을 줄일 수 있다는 장점이 있다. 프록시 서버 다른 네트워크 서비스에 간접적으로..
MySQL - 프로그래머스 131529. 카테고리 별 상품 개수 구하기 (문자열 자르기)
·
SQL
문제 PRODUCT 테이블에서 상품 카테고리 코드(PRODUCT_CODE 앞 2자리) 별 상품 개수를 출력하는 SQL문을 작성해주세요. 결과는 상품 카테고리 코드를 기준으로 오름차순 정렬해주세요. 예시 예를 들어 PRODUCT 테이블이 다음과 같다면 PRODUCT_ID PRODUCT_CODE PRICE 1 A1000011 10000 2 A1000045 9000 3 C3000002 22000 4 C3000006 15000 5 C3000010 30000 6 K1000023 17000 상품 카테고리 코드 별 상품은 아래와 같으므로, A1: PRODUCT_ID가 1, 2 인 상품 C3: PRODUCT_ID가 3, 4, 5 인 상품 K1: PRODUCT_ID가 6 인 상품 다음과 같은 결과가 나와야 합니다. CA..
SQL - 프로그래머스 131124. 재구매가 일어난 상품과 회원 리스트 구하기. 재구매가 일어난 상품과 회원 리스트 구하기
·
SQL
문제 설명 다음은 식당의 정보를 담은 REST_INFO테이블과 식당의 리뷰 정보를 담은 REST_REVIEW 테이블입니다. MEMBER_PROFILE 테이블은 다음과 같으며 MEMBER_ID, MEMBER_NAME, TLNO, GENDER, DATE_OF_BIRTH는 회원 ID, 회원 이름, 회원 연락처, 성별, 생년월일을 의미합니다. Column name Type Nullable MEMBER_ID VARCHAR(100) FALSE MEMBER_NAME VARCHAR(50) FALSE TLNO VARCHAR(50) TRUE GENDER VARCHAR(1) TRUE DATE_OF_BIRTH DATE TRUE REST_REVIEW 테이블은 다음과 같으며 REVIEW_ID, REST_ID, MEMBER_ID,..
Java - @JasonCreator로 DTO에서 유연하게 Enum Type 받기
·
Java
프로젝트를 하다가 DTO로 Enum타입을 바로 받을 수 있을지 궁금했다. 기존에는 아래 코드처럼 DTO에서 Enum을 사용하려면 String으로 데이터를 받은 뒤, 해당 String 값으로 Enum 객체를 생성해줘야 했다. 이 방식은 2가지 불편한 점이 있었는데, @Getter @Builder @AllArgsConstructor @NoArgsConstructor(access = AccessLevel.PROTECTED) public static class SignUp { @NotNull(message = "성별을 선택해야 합니다.") private String gender; } @AllArgsConstructor public enum Gender implements EnumType { MALE("남자"),..
Java - 커스텀 애너테이션으로 유효성 검사하기
·
Java
배경 프로젝트를 진행하다 보면 여러 가지 유효성 검사를 해야 한다. 가령 회원가입을 한다고 한다면 email과 password의 유효성 검사를 해주어야 한다. email은 Java에 내장되어 있는 이메일 유효성 검사용 @Email 애너테이션이 있지만 password는 직접 정규표현식을 짜서 유효성 검사를 해주어야 한다. 만약 password 유효성 검사를 다른 곳에서도 써야 한다면 기다란 정규표현식을 반복해서 작성해야한다. 이럴 때 password 유효성 검사를 담긴 애너테이션을 만들면 재사용성과 생산성이 높아질 것이다. @Getter @Builder @AllArgsConstructor @NoArgsConstructor(access = AccessLevel.PROTECTED) public static c..
Cold Bean
'분류 전체보기' 카테고리의 글 목록 (6 Page)