[Network] OSI 7계층
📌 들어가며 이번 글에서는 네트워크 통신을 7개 계층으로 나눈 OSI 7계층을 정리한다. 각 계층이 어떤 역할을 하고 어떤 프로토콜·장비가 동작하는지 계층별로 살펴본다. OSI 모델이란? Open Systems Interconnection — 네트워크 통신의 각 단계를 7개 계층으로 나눈 모델. 각 계층이 독립적으로 동작해, 통신의 효율성과 ...
📌 들어가며 이번 글에서는 네트워크 통신을 7개 계층으로 나눈 OSI 7계층을 정리한다. 각 계층이 어떤 역할을 하고 어떤 프로토콜·장비가 동작하는지 계층별로 살펴본다. OSI 모델이란? Open Systems Interconnection — 네트워크 통신의 각 단계를 7개 계층으로 나눈 모델. 각 계층이 독립적으로 동작해, 통신의 효율성과 ...
📌 들어가며 이번 글에서는 QueryDSL로 동적 쿼리를 작성하는 두 방식을 정리한다. 조건을 상황에 따라 붙였다 뗐다 하는 것이 핵심이다. 방식 도구 BooleanBuilder 조건을 하나의 빌더에 누적 Where 다중 파라미터 ...
📌 들어가며 이번 글에서는 QueryDSL에서 SQL 함수를 활용하는 법을 정리한다. SQL Function이란? DB가 제공하는 다양한 함수를 QueryDSL에서 쓸 수 있게 해주는 기능. SQLExpressions 클래스로 활용한다. 1. 문자열 함수 // concat: 문자열 합치기 → "이름(나이)" SQLExpressions...
📌 들어가며 이번 글에서는 QueryDSL의 서브쿼리를 정리한다. 서브쿼리란? 하나의 SQL 문 안에서 또 다른 SQL 문을 실행하는 것. 복잡한 조건을 간단하게 처리할 때 쓴다. 💡 서브쿼리에는 별칭이 다른 Q-Type이 필요하다. (QMember subMember = new QMember("subMember")) 1. 단일...
📌 들어가며 이번 글에서는 QueryDSL의 Projections를 정리한다. Projections란? 쿼리 결과를 원하는 형태(단일 값·DTO·Tuple)로 가져오는 기능. 엔티티 전체가 아니라 필요한 필드만 뽑아올 수 있다. 1. 기본 Projection (단일 값) List<String> memberNames = qu...
📌 들어가며 이번 글에서는 QueryDSL의 case 표현식을 정리한다. case 표현식이란? SQL에서 조건에 따라 값을 다르게 반환하는 구문. QueryDSL에서도 데이터에 따라 다르게 처리할 때 사용한다. 1. 간단한 case List<String> results = queryFactory .select(mem...
📌 들어가며 이번 글에서는 QueryDSL의 정렬을 정리한다. QueryDSL에서 정렬은 두 가지 방식이 있다. orderBy: DB 단에서 정렬 (JPQL 유사) Comparator(sort): 가져온 뒤 자바에서 정렬 (Java 8 스트림) 1. orderBy — DB 정렬 List<Product&g...
📌 들어가며 이번 글에서는 QueryDSL로 페이징하는 방법을 정리한다. 페이징이란? 데이터를 일정량씩 나눠 가져오는 것. 전체를 한 번에 로딩하지 않고 필요한 만큼만 가져와 성능을 최적화한다. 1. offset과 limit List<Product> products = queryFactory .selectFrom(p...
📌 들어가며 이번 글에서는 QueryDSL의 조인(Join)을 정리한다. 여러 테이블 간 관계를 활용해 데이터를 연결하는 다양한 방식을 살펴본다. 종류 설명 Inner Join 양쪽에 일치하는 것만 Left Join 왼쪽 ...
📌 들어가며 이번 글에서는 QueryDSL의 집계 함수를 정리한다. 집계 함수란? 여러 행의 데이터를 하나로 합치거나, 조건에 따라 계산하는 함수. 데이터 분석·통계에 필수다. 1. count long productCount = queryFactory .selectFrom(product) .where(product.pr...