반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 |
30 | 31 |
Tags
- SEO
- post
- Polylang
- useEffect
- 리액트오류
- Thymeleaf
- 데이터베이스
- router
- mergeattributes()
- linkedhastset
- addallattributes()
- @Repository
- 플러그인
- JPA
- GET
- @Controller
- @Query
- HttpSession
- set
- @Entity
- 워드프레스
- firebase
- 구글알고리즘
- Login
- ChatGPT
- GA4
- 구글애널리틱스
- db
- 인텔리제이
- 구글
Archives
- Today
- Total
개발천재
[Spring Boot] JPQL로 이해하는 데이터베이스 접근 방식 본문
반응형
JPQL 이해하기
JPQL(Java Persistence Query Language)은 JPA에서 엔티티 객체를 조회하기 위한 쿼리 언어이다. SQL과 비슷하지만, 테이블이 아니라 "엔티티"를 대상으로 쿼리를 작성한다.
쉽게 말하면 JPQL은 JPA에서 SQL처럼 데이터를 조회하는 방법이고, DB 테이블이 아니라 엔티티(Member, Order, Product 등)를 대상으로 검색한다. JPQL을 실행하면 SQL로 변환되어 DB에서 실행된다.
JPQL을 사용하면 객체 중심으로 쿼리를 작성할 수 있어서 유지보수가 쉽고, 데이터베이스에 따라 SQL이 다를 수 있지만, JPQL은 JPA가 자동 변환해준다는 장점이 있다. JPQL을 사용하면 DB 변경 시에도 코드 수정이 적다.
JPQL 기본 문법
SQL과 비슷하지만, 테이블 이름 대신 엔티티 이름을 사용하는 것이 특징이다.
전체 데이터 조회 (SELECT), 모든 회원 조회하기
JPQL
member 테이블을 직접 조회하는 SQL과 달리, JPQL에서는 Member 엔티티를 조회한다.
String jpql = "SELECT m FROM Member m";
List<Member> members = em.createQuery(jpql, Member.class).getResultList();
SQL
SELECT * FROM member;
조건 검색 (WHERE), 이름이 '유진'인 회원 찾기
JPQL
SQL과 유사하지만, m.name처럼 객체의 필드를 기준으로 조건을 설정합니다.
String jpql = "SELECT m FROM Member m WHERE m.name = :name";
Member member = em.createQuery(jpql, Member.class)
.setParameter("name", "유진")
.getSingleResult();
SQL
SELECT * FROM member WHERE name = '유진';
정렬 (ORDER BY), 회원 목록을 이름순으로 정렬하기
JPQL
ORDER BY도 동일하게 사용되지만, 엔티티의 필드 기준으로 정렬한다.
String jpql = "SELECT m FROM Member m ORDER BY m.name ASC";
List<Member> members = em.createQuery(jpql, Member.class).getResultList();
SQL
SELECT * FROM member ORDER BY name ASC;
LIKE 검색 (부분 검색), 이름에 '김'이 들어가는 회원 찾기
JPQL
LIKE 문법도 SQL과 동일하지만, 엔티티 필드를 기준으로 검색한다.
String jpql = "SELECT m FROM Member m WHERE m.name LIKE '%김%'";
List<Member> members = em.createQuery(jpql, Member.class).getResultList();
SQL과 비교하면?
SELECT * FROM member WHERE name LIKE '%김%';
JOIN 사용, 회원과 그 회원이 속한 팀 정보를 함께 가져오기
JPQL
SQL에서는 JOIN을 테이블 기준으로 하지만, JPQL에서는 객체(엔티티) 기준으로 JOIN을 수행한다.
String jpql = "SELECT m FROM Member m JOIN m.team t WHERE t.name = :teamName";
List<Member> members = em.createQuery(jpql, Member.class)
.setParameter("teamName", "아이브")
.getResultList();
SQL
SELECT m.* FROM member m
JOIN team t ON m.team_id = t.id
WHERE t.name = '아이브';
반응형
'개발 준비 > Spring Boot' 카테고리의 다른 글
[Spring Boot] @RestController, 효과적인 API 개발을 위한 핵심 가이드 (2) | 2025.03.04 |
---|---|
[Spring Boot] JPA Cascade 완벽 가이드 (2) | 2025.02.27 |
[Spring Boot] JPA 매핑 어노테이션 정리 (1) | 2025.02.27 |
[Spring Boot] JPA 영속성 컨텍스트 완벽 이해: 개념부터 실전 활용까지 (1) | 2025.02.26 |
[Spring Boot] 페이징 기능 구현하기 (0) | 2025.02.26 |