분류 전체보기

Querydsl Alias 사용 시 주의사항 및 최적화 방법Querydsl은 자바 기반의 타입 안전한 SQL 빌더로, 복잡한 쿼리를 쉽게 작성할 수 있도록 도와줍니다.그러나, Querydsl을 사용할 때, 특히 여러 엔티티를 조인(join)하는 상황에서는 주의해야 할 사항들이 있습니다.이 글에서는 그중에서도 조인을 명시했음에도 불구하고 불필요한 조인이 한 번 더 나가는 경우와 관련된 문제와 해결 방법에 대해 다루겠습니다.   1. 잘못된 조인으로 인한 성능 저하 문제예시에 활용될 엔티티 설명우선, 이 예시에서 사용할 엔티티들을 소개하겠습니다. 이 엔티티들은 OrderItem, Goods, Importer, OrderHistory로 구성되어 있으며, 각 엔티티의 역할과 관계를 간단히 설명하겠습니다.publ..
헥사고날 아키텍처 구조에 대해 간단하게 정리한 내용입니다. 헥사고날 아키텍처란? 헥사고날 아키텍처는 소프트웨어 설계에 사용되는 아키텍처 패턴 중 하나 사전적 의미로는 ”육각형 건축물”을 뜻한다. 비즈니스 로직 구현을 위한 내부영역과 기술적 구현을 위한 외부 영역 두면으로 구성하며 의존성을 낮춘 구조 헥사고널 아키텍처 구조의 이해 외부영역은 use case를 구현하는 InputPort를 통해 내부영역에 통신한다 InputPort는 Outport와 도메인을 통해 흐름처리만을 담당한다 유스케이스(인터페이스) , 입력포트, 출력포트(인터페이스) 로 구성 세 영역을 도메인 헥사고널, 애플리케이션 헥사고널, 프레임워크 헥사고널로 부르기도 한다 아키텍처의 스타일은 프로젝트 패키지 구조로 정의할 수 있다.
·백엔드/Java
싱글톤을 구현해야 하는 상황 하나만 유지하면 좋은 경우 반드시 하나만 유지해야 하는 경우 (여러개가 생성된다면 문제가 생기는 경우) 첫번째 방법 private 생성자 + public static final 필드를 사용하는 방법 public class Elvis { public static final Elvis INSTANCE = new Elvis(); private Elvis() {} } 장점 간결하고 싱글턴임을 API에 드러낼 수 있다. 단점 싱글톤을 사용하는 클라이언트 코드를 테스트하기 어려워진다. 리플렉션으로 private 생성자를 호출할 수 있다. // 리플렉션을 통해 싱글톤을 깨뜨리는 방법 예제 public static void main(String[] args) { try { Construct..
·백엔드/Java
Long 타입 값 비교를 하다 보면 true를 제대로 반환할 때도 있고 false를 반환하는 경우도 만난다. 이유 Java는 -128 ~ 127 범위의 Long , Integer 객체는 내부적으로 캐싱하여 동일한 객체로 취급 하기 때문에 == 비교를 해도 true가 나온다. // -128 ~ 127 은 == 로 비교가능 Long a = 127L; Long b = 127L; Long _a = -128L; Long _b = -128L; boolean resultA = a == b; boolean resultB = _a == _b; System.out.println("a == b = " + resultA); // a == b = true System.out.println("_a == _b = " + resul..
·백엔드/Java
“코딩으로 학습하는 GoF의 디자인 패턴” 강의를 보며 간략하게 정리한 내용입니다. 프로토타입(Prototype) 패턴이란? 객체 생성을 위해 클래스에서 인스턴스를 생성하는 대신, 기존에 생성된 객체를 복제하여 새로운 객체를 생성하는 패턴 Object 의 clone() 메서드를 통해 구현할 수 있다 clone() 조건 x.clone() ≠ x // 다른 인스턴스가 새로 만들어진거라 같지 않음 x.clone().getClass() == x.getClass() x.clone().equals(x) // 데이터는 같기 때문에 true Cloneable 인터페이스를 구현해야함 프로토타입 패턴을 사용하는 이유 동일한 작업을 반복하지 않아도 됨(리소스 소모가 심한 작업일 경우 복제해 사용하면 이득을 볼 수 있음) D..
·백엔드/Java
빌더(Builder) 패턴이란? 빌더(Builder) 패턴은 객체를 생성하는 과정을 단순화하기 위한 디자인 패턴 Builder에 인스턴스 생성방법을 스탭 별로 만들어 놓은 인스턴스를 정의하고, 최종적으로 인스턴스를 받아올 수 있는 getXXX(); 라는 메서드를 구현하는 구현체를 만들어 객체를 생성하는 방법 빌더 패턴을 사용하는 이유 필요한 데이터만 설정 가능하다 유연성을 확보할 수 있다 가독성을 높인다 변경 가능성을 최소화할 수 있다 빌더패턴을 사용하는 이유와 구현 코드를 알아보자 예제 코드 예행 계획을 만드는 여행계획 클래스가 있다 public class 여행계획 { private String title; //여행 이름 private int nights; // 몇박 private int days;//..
dami97
'분류 전체보기' 카테고리의 글 목록 (11 Page)