전체 글

일단 맨땅에 헤딩한 뒤에 배우는 타입입니다
삽질..

[QueryDsl] Pagination + FetchJoin 이게 무슨일이요.

# 문제 상황 .offset, .limit을 이용하여 페이지네이션을 진행하는 querydsl 쿼리를 작성했다. Pageable 객체를 이용했다. N+1 문제 해결을 위해 연관 관계 엔티티를 fetchJoin까지 한 상황이다. List farmLogs = jpaQueryFactory .selectFrom(farmLog) .leftJoin(farmLog.likers).fetchJoin() // 좋아요한 사람들 fetch join .offset(pageable.getOffset()) .limit(pageable.getPageSize()) .orderBy(farmLog.createdAt.desc()) .fetch(); 일단 쿼리 결과는 나오지만? # firstResult/maxResults specified w..

JAVA/OOP

객체지향 디자인 패턴

객체지향 프로젝트를 설계하는데 자주 쓰이는 구조인 디자인 패턴 몇 가지를 살펴보도록 하겠다. 딱딱하게 외우기보다는, 디자인 패턴의 구현 과정을 따라가며 패턴 이름과 연관성을 따져가며 이미지화 하는 것이 좋을듯! 1. 싱글톤 패턴 (Singleton Pattern) 인스턴스를 하나만 만들어서 쓰는 패턴. 인스턴스를 한 개만 만들면 되는 DB 커넥션, 로그 기록, configuration 등의 클래스가 싱글톤 패턴으로 만들어진다. 불필요한 메모리 낭비를 줄이고, 전역 변수를 넣어 여러 인스턴스들이 값을 공유하게 할 수도 있다. 클래스 속성 값으로 해당 클래스 타입의 static 속성값 하나를 둔다. 생성자는 private으로 두어 클래스 외부에서 인스턴스를 만들 수 없게 한다. static getInstan..

JAVA/OOP

객체지향 설계 5원칙 : SOLID

 프로그램을 설계할 땐 모듈 간 결합도는 낮추고, 모듈 내 응집도를 높여야 한다는 원칙이 있다. 모듈 간의 상호 의존성을 낮춰 한 부분이 조금 변한다고 해서 전체 시스템이 망가지지 않게 해야하고, 연관성이 있는 요소들을 하나의 모듈로 집중시켜 재사용 및 유지보수성을 높이는 것이다. 객체지향적 관점으로 위 원칙을 지키기 위해 나온 개념이 객체지향 설계 5원칙, SOLID이다. 1. SRP(단일 책임 원칙) : 하나의 모듈은 하나의 책임만을 갖는다. 나(부추)는 학생이기도, 어머니의 딸이기도, 누군가의 친구이기도 하다. 각각의 사회적 역할에서 나(사람)의 행위를 Person 객체에 정의해보았다. public class Person { public void study() { System.out.println..

JAVA/Spring

[QueryDSL] QueryDSL이란? + 간단한 실습

1. QueryDSL? # Spring Data JPA의 한계 자바 어플리케이션에서 DB에 접근할 수 있게 해주는 JDBC. JDBC를 사용해 JPA를 구현한 ORM 프레임워크인 Hibernate. 그것을 한 층 더 편리하게 쓰게 해주는 Spring Data JPA. 하나하나 SQL문을 작성할 필요 없이 일정한 규악에 따른 derivced query만 작성하면 알아서 원하는 DB 접근 쿼리문을 작성해주는데다가, object mapping까지 시켜주는 유용한 라이브러리. .. 이지만 역시 한계는 존재한다. 1) 끝도 없이 길어지는 Derived Query 주인 - 애완동물 연관 관계에서, 특정 주인의 애완동물 중 특정 나이 이상의 애완동물을 최신 순으로 찾는 derived query이다. public Li..

김부추
두들두들