QueryDSL 소개
·
Spring
http://querydsl.com/http://querydsl.com/static/querydsl/5.0.0/reference/html_single/http://querydsl.com/static/querydsl/5.0.0/apidocs/QueryDSL이란?QueryDSL은 타입 안전하고 가독성 높은 쿼리를 작성할 수 있도록 도와주는 Java 기반의 라이브러리입니다.SQL과 유사한 문법으로 JPQL, SQL, JPA와 함께 사용할 수 있습니다.왜 QueryDSL을 사용할까?타입 안전성:쿼리를 작성할 때 컴파일 시점에 오류를 잡아줍니다.문자열 기반 쿼리(JPQL)와 달리 런타임 오류를 방지합니다.가독성:쿼리를 코드로 작성하므로 가독성이 뛰어나고 유지보수가 용이합니다.동적 쿼리 작성:조건에 따라 쿼리를 동..
Spring Data JPA - Pageable
·
Spring
Pageable?Pageable은 Spring Data JPA에서 제공하는 페이징 처리를 위한 인터페이스입니다.데이터를 한 번에 모두 가져오지 않고 페이지 단위로 나누어 조회하기 위해 사용됩니다.Pageable의 주요 개념페이지 번호 (Page Number): 가져올 페이지의 인덱스를 의미합니다.페이지 번호는 0부터 시작합니다. (1페이지 = 인덱스 0)페이지 크기 (Page Size): 한 페이지에 포함될 데이터의 개수입니다.정렬 (Sort): Pageable 객체에 정렬 기준을 포함할 수 있습니다.Pageable의 주요 인터페이스와 클래스Pageable: 페이징 정보를 추상화한 인터페이스입니다.PageRequest: Pageable 인터페이스의 구현체로, 페이지 번호와 크기, 정렬 정보를 제공합니다...
Spring Data JPA - Sort
·
Spring
Sort란?Sort는 데이터 조회 시 특정 필드를 기준으로 정렬할 수 있도록 도와주는 Spring Data JPA 기능입니다.정렬 방식은 크게 두 가지입니다:오름차순(Ascending): 작은 값 → 큰 값 (ASC)내림차순(Descending): 큰 값 → 작은 값 (DESC)2. Sort의 주요 개념Sort 객체: Spring Data JPA의 Sort 클래스를 사용하여 정렬 기준과 방식을 설정합니다.필드 기준: 정렬은 엔티티의 필드(예: name, age, createdAt)를 기준으로 적용됩니다.다중 필드 정렬: 여러 필드를 조합해서 정렬할 수 있습니다. 예: 나이 기준 내림차순 → 같은 나이에서는 이름 오름차순3. Sort 사용법 단계별 이해1. 단일 필드를 기준으로 정렬하기오름차순 정렬Sort..
Spring Data JPA - JPA Query Methods
·
Spring
JPA Query Methods :: Spring Data JPAJPA Query Method개념JPA Query Method는 메서드 이름만으로 쿼리를 생성하는 Spring Data JPA의 강력한 기능입니다.개발자는 메서드의 이름 규칙을 따라 작성하기만 하면, Spring Data JPA가 자동으로 JPQL(Java Persistence Query Language) 쿼리를 생성해 실행합니다.장점SQL 작성 필요 없음: 메서드 이름만으로 쿼리를 작성할 수 있습니다.자동화된 쿼리 생성: Spring Data JPA가 자동으로 JPQL을 생성해줍니다.간결하고 직관적: 쿼리의 목적을 메서드 이름으로 표현하므로 코드의 가독성이 높아집니다.JPA Query Method 작성 규칙기본 형식findBy 또는 rea..
Spring MVC 아키텍처 계층 구조 + Entity와 DTO를 변환하는 이유
·
Spring
1. 구조 단계별 설명Client사용자 또는 클라이언트가 요청을 보냅니다.웹 페이지나 모바일 애플리케이션이 클라이언트 역할을 합니다.Controller역할: 클라이언트의 요청을 받고 적절한 서비스를 호출합니다.DTO 사용: 클라이언트가 보낸 데이터를 DTO (Data Transfer Object)로 받아 처리합니다.주요 기능:요청(Request) 데이터 검증Service 계층에 데이터 전달처리 결과를 클라이언트에게 반환Service역할: 비즈니스 로직을 담당합니다.Controller에서 넘어온 DTO를 처리하고 Entity로 변환해 Repository로 전달합니다.ServiceImpl: 비즈니스 로직의 세부 구현을 처리하는 클래스입니다.DAO (Repository)DAO (Data Access Objec..
ModelMapper 라이브러리
·
Spring
https://modelmapper.org/https://mvnrepository.com/artifact/org.modelmapper/modelmapperModelMapper란?ModelMapper는 객체 간 매핑(객체 변환)을 간편하게 처리할 수 있는 Java 라이브러리입니다. 주로 DTO(Data Transfer Object)와 Entity 간의 변환에 사용되며, 이를 통해 코드를 간결하고 효율적으로 작성할 수 있습니다.왜 ModelMapper가 필요한가?DTO와 Entity의 변환은 반복적이고 귀찮은 작업이 될 수 있습니다.수동 변환 시 코드가 복잡하고 가독성이 떨어질 수 있습니다.ModelMapper의 특징자동 매핑객체의 필드명이 동일하면 자동으로 매핑해줍니다.예: DTO의 name 필드 → En..
Spring Data JPA 개요
·
Spring
Spring Data JPA 소개https://spring.io/projects/spring-data-jpa1. Spring Data JPA의 목적과 특징Spring Data JPA란?JPA를 더 쉽고 간단하게 사용할 수 있도록 도와주는 Spring 프레임워크의 하위 모듈입니다.JPA가 제공하는 표준 기능 외에도 반복적으로 사용되는 코드를 최소화하고, 간단한 방식으로 CRUD 작업을 구현할 수 있게 도와줍니다.Spring Data JPA의 주요 특징Repository 기반의 개발데이터를 조작하는 코드를 작성하지 않고도, JpaRepository 인터페이스만 상속하면 기본적인 CRUD 메소드가 자동으로 제공됩니다.메소드 이름으로 쿼리 생성findByName, findByAgeGreaterThan처럼 메소드..
JPA - JPQL (Java Persistence Query Language)
·
Spring
JPA 쿼리 방식쿼리 방식특징유리한 상황JPQL객체 지향 쿼리 언어, 데이터베이스 독립적.일반적인 쿼리, JPA 기본 기능 활용.Criteria API코드 기반 동적 쿼리, 타입 안전성 제공.동적 쿼리 작성 시.Native QuerySQL 직접 실행, 데이터베이스 종속적.복잡한 SQL 작성, 성능 최적화가 필요한 경우.Named Query엔티티에 미리 정의된 JPQL, 재사용 가능.자주 사용되는 JPQL을 미리 정의할 때.Spring Data JPA메서드 이름 기반 쿼리 생성 및 @Query를 활용.빠르고 간단한 쿼리 작성.QueryDSL타입 안전한 동적 쿼리 작성 가능, 코드 가독성 좋음.복잡한 동적 쿼리 작성.JDBC Template순수 SQL 실행, Spring에서 리소스 관리 제공.JPA 사용하지..
JPA - 연관관계 매핑
·
Spring
연관관계 매핑객체 모델과 관계형 모델의 차이객체 모델(Object Model): 객체 간의 관계는 참조(Reference)를 통해 연결됩니다.예: lecture.getInstructor() → 강의가 참조하는 강사 객체를 반환.관계형 모델(Relational Model): 테이블 간의 관계는 외래 키(Foreign Key)를 통해 연결됩니다.예: lecture 테이블의 instructor_id는 강사를 참조.멘탈 모델: 객체는 참조를 통해 관계를 표현하지만, 데이터베이스는 외래 키를 통해 관계를 표현한다는 점을 항상 염두에 둡니다.엔티티 간의 관계와 역할연관관계 매핑은 데이터베이스와 객체의 관계를 매핑하는 것이므로, 두 가지를 이해해야 합니다:연관 관계의 방향성단방향: 한쪽 엔티티에서만 관계를 정의.양방..
영속성 컨텍스트와 엔티티의 생명 주기
·
Spring
영속성 컨텍스트(Persistence Context)는 JPA(Java Persistence API)에서 핵심적인 개념으로, 엔티티(Entity) 객체를 관리하고 데이터베이스와의 상호작용을 조정하는 역할을 합니다. 영속성 컨텍스트는 메모리 내에서 엔티티를 관리하며, 데이터베이스와 직접적인 CRUD 작업을 효율적으로 처리합니다. 이 과정에서 엔티티의 상태(생명 주기)가 어떻게 변화하는지 이해하는 것이 중요합니다.영속성 컨텍스트란?영속성 컨텍스트(Persistence Context)는 JPA가 관리하는 엔티티 객체를 저장하고 관리하는 메모리 공간입니다. 간단히 말해, 엔티티의 상태를 추적하고 데이터베이스와 동기화하는 역할을 합니다.영속성 컨텍스트의 주요 특징1차 캐시영속성 컨텍스트는 1차 캐시로 동작하며, ..