일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- github 복제
- 저장소 복제
- JPA
- 파이썬
- JPQL
- HttpServletResponse
- 스프링 이메일 전송
- springboot
- Servlet
- 값 타입
- 두수의 합 자바
- 서버 배포
- 프로그래머스
- 자바
- Chat GPT
- Json 객체
- 스프링부트 OpenAI API
- api 개발
- MySQL
- 비밀번호 재설정 API
- jar빌드
- git 충돌 해결
- MVC
- JDBC
- Git
- 우분투
- swap 메모리
- 넘파이
- 페이징 정렬
- 저장소 이전
- Today
- Total
현의 개발 블로그
[JPQL 문법] 쿼리 언어 소개 본문
JPQL
JPA를 사용하면 엔티티 객체를 중심으로 개발한다.
검색을 할 때도 테이블이 아닌 엔티티 객체를 대상으로 검색한다.
하지만 모든 DB 데이터를 객체로 변환해서 검색하는 것은 불가능하다.
애플리케이션에 필요한 데이터만 DB에서 불러오려면, 검색 조건이 포함된 SQL이 필요하다.
JPA는 SQL을 추상화한 JPQL이라는 객체 지향 쿼리 언어를 제공한다.
SQL 문법과 유사한데 SELECT, FROM, GROUP BY, HAVING, JOIN 등이 지원된다.
SQL은 데이터베이스 테이블을 대상으로 쿼리를 한다면, JPQL은 엔티티 객체를 대상으로 쿼리한다.
JPQL은 SQL을 추상화 하였으므로 특정 데이터베이스에 의존하지 않는다.
List<Member> result
= em.createQuery("select m From Member m.username like '%kim%'",Member.class)
.getResultList();
QueryDSL
String이 아닌 자바코드로 JPQL을 작성할 수 있다.
컴파일 시점에 문법 오류를 찾을 수 있고, 동적 쿼리 작성이 편리하다는 장점이 있다.
Querydsl - 레퍼런스 문서
Querydsl은 JPA, JDO, Mongodb 모듈에서 코드 생성을 위해 자바6의 APT 어노테이션 처리 기능을 사용한다. 이 절에서는 코드 생성을 위한 다양한 설정 옵션과 APT에 대한 대안을 설명한다. 기본적으로 Query
querydsl.com
JDBC 직접 사용, Spring JdbcTemplate
JPA를 사용하면서 JDBC 커넥션을 직접 사용하거나 스프링 jdbcTemplate, MyBatis 등을 함께 사용할 수 있다.
단, 적절한 시점에 영속성 컨텍스트에 강제 flush로 DB에 변경사항이 반영되야 한다.
JPA로 쿼리를 쓰면 자동 플러시가 되지만 JDBC는 그렇지 않으므로 SQL을 실행하기 직전에 수동 플러시가 필요하다.
Member member = new Member();
member.setUsername("member1");
em.persist(member);
//결과 null
dbconn.executeQuery("select * from member");
'스프링부트 이론 > JPA' 카테고리의 다른 글
[JPQL 문법] 프로젝션, 조인, 서브쿼리 (0) | 2023.08.02 |
---|---|
[JPQL 문법] JPQL 기본 문법과 쿼리 API (0) | 2023.08.02 |
[값 타입] 값 타입 컬렉션 (0) | 2023.06.01 |
[값 타입] 값 타입 비교 (0) | 2023.06.01 |
[값 타입] 값 타입과 불변 객체 (0) | 2023.05.29 |