728x90

2025/06/05 3

JPQL createQuery 메서드 탐구

EntityManager 에는 두 가지 createQuery 메서드가 있습니다. 시그니처 반환 타입 특징 Query createQuery(String jpql)Query (raw)타입 정보를 잃어버림. 컴파일 단계에서 결과 타입을 체크할 수 없고, 캐스팅이 필요합니다. TypedQuery createQuery(String jpql, Class resultClass)TypedQuery제네릭 기반 타입-세이프(type-safe) 쿼리. 컴파일러가 결과 타입을 T로 고정해 주므로 캐스팅이 필요 없고 오류를 미리 잡아줍니다.각각 비교// 1) 타입-세이프 쿼리TypedQuery query = em.createQuery("select m from Member m where m.name = :name",..

JPA 2025.06.05

JPQL 문법 완벽 가이드: JPA를 위한 쿼리 작성법

Java Persistence API(JPA)를 사용할 때 객체 지향 패러다임을 유지하면서 데이터베이스를 조회하기 위해서는 Java Persistence Query Language(JPQL) 를 이해해야 합니다. JPQL은 SQL과 유사하지만, 테이블이 아닌 엔티티와 그 관계를 대상으로 질의를 수행한다는 점이 특징입니다. 본 글에서는 JPQL의 핵심 문법과 실전 예제, 그리고 성능 최적화 팁까지 한 번에 정리해 보겠습니다.1. JPQL 기본 구조JPQL의 구문은 SQL과 유사하나, 주요 키워드와 대상이 엔티티임을 기억하세요.// JPQL 기본 예시String jpql = "SELECT m FROM Member m WHERE m.age > 20"; 절 설명SELECT반환할 엔티티(또는 필드) 지정FROM조..

JPA 2025.06.05

Java null pointer 시대와 작별하는 가장 우아한 방법

1. 왜 Optional인가?NullPointerException(NPE)은 자바 역사상 가장 흔한 런타임 오류입니다. Optional는 “값이 있을 수도, 없을 수도 있다”는 사실을 타입 시스템에 명시함으로써, 호출자에게 반드시 선택을 강제합니다. 컴파일 타임에 “값이 없을 수도 있다”는 사실을 알릴 수 있고API 설계 의도를 더 읽기 쉽게 만들며방어적 코드(불필요한 null 체크)를 줄여 가독성과 안정성을 높여 줍니다.2. Optional 기본 사용법 빠르게 훑어보기Optional maybeMember = memberRepository.findById(1L);// 값이 있으면 그대로, 없으면 기본값Member m1 = maybeMember.orElse(defaultMember);// 필요할 때 지연 ..

JPA 2025.06.05
728x90