반응형
Notice
Recent Posts
Recent Comments
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 발매예정
- 덩크로우
- dunklow
- 파이썬
- Linux
- 리액트
- draw
- Java
- jQuery
- Dunk Low
- GIT
- 덩크 하이
- 주식공부
- 코로나19
- 주식
- Python
- 오라클
- dunk high
- 제이쿼리
- react
- 덩크 로우
- 드로우
- Nike
- oracle
- sacai
- stockx.com
- 나이키
- 자바스크립트
- 리눅스
- JavaScript
Archives
- Today
- Total
Life goes slowly...
[JPA] JPA에서 JpaRepository를 사용하여 쿼리 작성 방법 본문
728x90
반응형
Spring Data JPA에서 JpaRepository를 사용하면서 직접 쿼리를 작성하는 방법은 크게 세 가지가 있다. 단순한 이름 규칙부터 복잡한 동적 쿼리까지 상황에 맞게 선택하시면 된다.
1. 쿼리 메소드 (Query Methods)
가장 간단한 방법입니다. 메소드 이름을 특정 규칙에 맞춰 선언하면 JPA가 이를 해석해 SQL을 자동으로 생성한다.
단순조회나 간단한 조건의 쿼리를 사용할때 사용하는 방식이다.(And, Or정도)
- 장점: 간단함, 별도의 쿼리 작성 불필요.
- 단점: 조건이 많아지면 메소드 이름이 너무 길어짐.
public interface UserRepository extends JpaRepository<User, Long> {
// SELECT * FROM user WHERE email = ?
Optional<User> findByEmail(String email);
// SELECT * FROM user WHERE name = ? AND age > ?
List<User> findByNameAndAgeGreaterThan(String name, int age);
}
2. @Query 어노테이션
메소드 위에 직접 JPQL(Java Persistence Query Language)이나 Native SQL을 작성하는 방식이다. 고정된 복잡한 쿼리 나 특정 DB 전용 함수 사용시 사용하는 방식이다.
- 장점: 복잡한 Join이나 통계 쿼리에 적합, 이름 규칙에서 자유로움.
- JPQL: 엔티티 객체를 대상으로 쿼리 수행.
- Native Query: 특정 DB 전용 SQL을 그대로 사용.
public interface UserRepository extends JpaRepository<User, Long> {
// JPQL 사용 (엔티티와 필드 이름 기준)
@Query("SELECT u FROM User u WHERE u.status = 'ACTIVE' ORDER BY u.id DESC")
List<User> findAllActiveUsers();
// 파라미터 바인딩 (@Param)
@Query("SELECT u FROM User u WHERE u.name = :userName")
User findUserByName(@Param("userName") String name);
// Native Query 사용
@Query(value = "SELECT * FROM users WHERE last_login > DATE_SUB(NOW(), INTERVAL 1 MONTH)", nativeQuery = true)
List<User> findRecentLogins();
}
3. Querydsl (추천)
코드로 쿼리를 작성하는 방식입니다. 프로젝트 설정이 조금 복잡할 수 있지만, 실무에서는 거의 필수적으로 사용된다. 조건에 따라 쿼리가 변하는 동적 쿼리 그리고 복잡한 Join 사용할때 사용하는 방식이다.
- 장점: 컴파일 시점에 문법 오류 발견 가능, 동적 쿼리 작성이 매우 쉬움, 자동 완성 지원.
- 방식: 보통 CustomRepository를 인터페이스로 만들고 이를 구현(Impl)하여 사용합니다.
// Querydsl을 이용한 동적 쿼리 예시 (요약)
public List<User> searchUsers(String name, Integer age) {
return queryFactory
.selectFrom(user)
.where(
nameEq(name),
ageEq(age)
)
.fetch();
}728x90
반응형
'프로그래밍 > Java' 카테고리의 다른 글
| [JPA] JPA - ExpressionUtils / 서브쿼리 (0) | 2026.01.30 |
|---|---|
| [JPA] JPA + Querydsl 코드 작성방법 (0) | 2026.01.29 |
| [JPA] JPA ExpressionUtils 서브쿼리로 연산방법 (0) | 2026.01.28 |
| [JPA]JPA 로 개발하면서 자주 하는 실수 Top 5 (0) | 2026.01.27 |
| [JPA] JPA 핵심 개념 5가지!!! (0) | 2026.01.26 |
| [JPA] 초보자가 쉽게 이해하는 JPA 동작구조 (0) | 2026.01.25 |
| [JPA] 초보자가 쉽게 이해하는 Spring Data JPA 설명 (3) | 2026.01.24 |
| [Java] 자바에서 객체 정렬하기 - Comparable, Comparator (0) | 2020.10.17 |
Comments