개발 도구/백엔드 개발 (Backend Development)(83)
-
[spring jpa] 스프링 데이터 JPA가 제공하는 Querydsl 기능
이 글은 인프런 김영한님의 "실전! Querydsl" 강의를 수강하고 정리한 내용이다. 스프링 데이터 JPA는 Querydsl을 지원하기 위한 몇 가지 기능을 제공한다. 하지만 이 기능들은 제약이 크고, 복잡한 실무 환경에서는 한계가 뚜렷하다. 따라서 간단히 개념을 소개하고, 왜 실무에서는 직접 사용자 정의 리포지토리와 Querydsl을 결합하는 방식을 더 권장하는지 정리한다 .1. QuerydslPredicateExecutor리포지토리에 QuerydslPredicateExecutor를 상속하면 간단한 조건 검색을 Predicate 기반으로 지원한다.public interface MemberRepository extends JpaRepository, QuerydslPredicateExecutor {} 사..
2026.06.22 -
[spring jpa] 스프링 데이터 JPA와 Querydsl
이 글은 인프런 김영한님의 "실전! Querydsl" 강의를 수강하고 정리한 내용이다. 스프링 데이터 JPA는 기본 CRUD와 쿼리 메소드로 많은 기능을 제공하지만, 복잡한 동적 쿼리와 성능 최적화에는 한계가 있다. Querydsl과 결합하면 이 부분을 강력하게 보완할 수 있다. 이번 글에서는 사용자 정의 리포지토리, 페이징 최적화, 컨트롤러 개발을 중심으로 정리한다.1. 스프링 데이터 JPA 리포지토리 적용스프링 데이터 JPA의 JpaRepository를 상속하면 기본 CRUD 메서드를 바로 사용할 수 있다.public interface MemberRepository extends JpaRepository { List findByUsername(String username);}단순 조회, 저장, ..
2026.06.15 -
[spring jpa] 순수 JPA와 Querydsl 비교
이 글은 인프런 김영한님의 "실전! Querydsl" 강의를 수강하고 정리한 내용이다. 실무에서는 단순 조회를 넘어서, 다양한 검색 조건과 성능 최적화를 동시에 고려해야 한다. 이번 글에서는 순수 JPA 리포지토리와 Querydsl의 차이, 동적 쿼리 작성 방식, 그리고 조회 API 개발 과정을 정리한다.1. 순수 JPA 리포지토리순수 JPA를 사용하면 EntityManager를 직접 활용해 쿼리를 작성해야 한다.public List findByUsername(String username) { return em.createQuery("select m from Member m where m.username = :username", Member.class) .setParameter..
2026.06.08 -
[spring jpa] Querydsl 중급 문법
이 글은 인프런 김영한님의 "실전! Querydsl" 강의를 수강하고 정리한 내용이다. 기본 문법을 넘어, 실무에서 자주 활용되는 프로젝션, 동적 쿼리, 벌크 연산, SQL 함수 호출에 대해 정리한다.1. 프로젝션과 결과 반환단일 필드 프로젝션List result = queryFactory .select(member.username) .from(member) .fetch();단일 필드는 타입이 명확하므로 깔끔하게 조회된다.다중 필드 프로젝션 (Tuple)List result = queryFactory .select(member.username, member.age) .from(member) .fetch();Tuple을 활용하면 여러 필드를 동시에 조회할 수 있다. 다만 T..
2026.06.01 -
[spring jpa] Querydsl 기본 문법
이 글은 인프런 김영한님의 "실전! Querydsl" 강의를 수강하고 정리한 내용이다. Querydsl은 JPQL을 타입 안전하고 직관적인 자바 코드로 작성할 수 있도록 도와주는 프레임워크이다. 이번 글에서는 기본 문법을 정리한다.1. JPQL vs QuerydslJPQL은 문자열로 작성되기 때문에 실행 시점에 오류를 확인할 수 있다.Querydsl은 코드 기반으로 작성하므로 컴파일 시점에 오류를 잡을 수 있다.JPQL에서는 파라미터 바인딩을 직접 해야 하지만, Querydsl은 메서드 체이닝으로 깔끔하게 처리할 수 있다.예시:// JPQLString qlString = "select m from Member m where m.username = :username";Member result = em.cr..
2026.05.25 -
[spring jpa] Specifications(명세), Query By Example, Projections, 네이티브 쿼리 기능
이 글은 인프런 김영한님의 "실전! 스프링 데이터 JPA" 강의를 수강하고 정리한 내용이다. 스프링 데이터 JPA는 CRUD, 쿼리 메소드, 확장 기능 외에도 다양한 부가 기능을 제공한다. 이번 글에서는 Specifications(명세), Query By Example, Projections, 네이티브 쿼리 기능을 정리한다. 1. Specifications (명세)도메인 주도 설계(DDD)에서 소개된 Specification 패턴을 JPA Criteria로 구현.검색 조건을 Specification 인터페이스로 캡슐화하여 재사용 및 조합 가능.JpaSpecificationExecutor를 리포지토리에 상속받아 사용.public interface MemberRepository extends JpaRepos..
2026.05.18 -
[spring jpa] 구현체(SimpleJpaRepository) 분석과 새로운 엔티티 구별 방법
이 글은 인프런 김영한님의 "실전! 스프링 데이터 JPA" 강의를 수강하고 정리한 내용이다. 스프링 데이터 JPA는 단순히 편리한 기능을 제공하는 수준을 넘어서, 내부적으로 어떻게 동작하는지 이해해야 효율적으로 활용할 수 있다. 이번 글에서는 구현체(SimpleJpaRepository) 분석과 새로운 엔티티 구별 방법을 정리한다.1. 스프링 데이터 JPA 구현체 분석스프링 데이터 JPA의 핵심 구현체는 SimpleJpaRepository이다. 우리가 JpaRepository를 상속받아 사용하는 순간, 스프링은 이 구현체를 기반으로 동작한다.@Repository@Transactional(readOnly = true)public class SimpleJpaRepository ...{ @Transacti..
2026.05.11 -
[spring jpa] JPA 확장 기능
이 글은 인프런 김영한님의 "실전! 스프링 데이터 JPA" 강의를 수강하고 정리한 내용이다. 스프링 데이터 JPA는 기본적인 CRUD와 쿼리 메소드 기능을 넘어 다양한 확장 기능을 제공한다. 실무에서 자주 활용되는 대표 기능들을 정리한다. 1. 사용자 정의 리포지토리 구현스프링 데이터 JPA는 인터페이스만 정의하면 구현체를 자동 생성한다. 그러나 복잡한 요구사항이나 QueryDSL, JdbcTemplate 같은 기술을 활용하려면 사용자 정의 리포지토리가 필요하다.구현 방법사용자 정의 인터페이스 작성public interface MemberRepositoryCustom { List findMemberCustom();}사용자 정의 인터페이스 구현 클래스 작성@RequiredArgsConstructorp..
2026.05.04 -
[spring jpa] 스프링 데이터 JPA 쿼리 메소드 기능
이 글은 인프런 김영한님의 "실전! 스프링 데이터 JPA" 강의를 수강하고 정리한 내용이다. 스프링 데이터 JPA는 반복적인 SQL 작성과 JPQL 정의를 최소화하기 위해 쿼리 메소드 기능을 제공한다. 이 기능 덕분에 리포지토리에 메서드만 정의해도 스프링이 적절한 쿼리를 자동으로 생성하거나 실행한다.1. 쿼리 메소드 기능의 세 가지 방식메소드 이름으로 쿼리 생성메소드 이름을 분석해 자동으로 JPQL 실행.예: findByUsernameAndAgeGreaterThan(String username, int age)NamedQuery 호출@NamedQuery 어노테이션으로 정의한 쿼리를 호출.스프링 데이터 JPA는 엔티티 클래스의 @NamedQuery를 자동으로 인식.@Query 직접 정의메서드 위에 @Que..
2026.04.27 -
[spring jpa] 스프링 데이터 JPA, QueryDSL 소개
이 글은 인프런 김영한님의 "실전! 스프링 데이터 JPA" 강의를 수강하고 정리한 내용이다.스프링 데이터 JPA 소개스프링 데이터 JPA란?스프링 데이터 JPA는 JPA(Java Persistence API)를 더 쉽고 간편하게 사용할 수 있도록 도와주는 스프링 프로젝트이다. JPA의 표준 문법을 기반으로 하면서, 반복되는 코드 작성 없이 리포지토리 인터페이스만 정의하면 구현체를 자동으로 생성해준다.주요 특징리포지토리 자동 구현: JpaRepository를 상속받으면 CRUD, 페이징, 정렬 등의 기능을 바로 사용할 수 있다.메서드 이름 기반 쿼리: 메서드 네이밍 규칙만으로 쿼리를 자동 생성한다.페이징과 정렬 지원: Pageable, Sort 객체를 통해 간단하게 페이징/정렬을 구현할 수 있다.JPQL과..
2026.04.20