일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Github_token
- Git
- Token
- 스파르타내일배움캠프TIL
- 내일배움캠프
- #스파르타내일배움캠프TIL
- TiL_1st_0419
- JVM
- 메서드
- KPT
- 회고록
- 변수의 다양성
- static
- GitHub
- Diary 해우소
- Java의 이점
- 인스턴스
- 객체지향 언어
- #내일배움캠프
- 생성자
- 클래스
- Java
- 포맷은 최후의 보루
- 스레드
- diary
- 해우소
- 감사기록
- #스파르타내일배움캠프
- 스파르타내일배움캠프
- 성장기록
- Today
- Total
몬그로이
JPQL - 복잡한 쿼리를 수동으로 작성하고 실행하는 방법 본문
- SQL : Table 명으로 쿼리짤때 쓰이는 언어 (쓰이는곳. JDBC, SQL Mapper)
- JPQL : Entity 명으로 쿼리짤때 쓰이는 언어 (쓰이는곳. JPQL, QueryDSL)
JPQL (Java Persistence Query Language)
Table 이 아닌 Entity(객체) 기준으로 작성하는 쿼리
EntityManger 또는 @Query 구현체를 통해 JPQL 쿼리를 사용할 수 있다.
EntityMananger.createQuery()
- 쿼리 문자열과 Entity 를 직접 넣어서 쿼리를 작성한다.
- setParameter 와 같이 key, value 문자열을 통해서 쿼리 파라미터를 매핑할 수 있다.
@Test
public void testEmCreateQuery() {
String qlString = "select u from User u " +
"where u.username = :username";
Member findUser = em.createQuery(qlString, User.class) //위에 작성해둔 쿼리 문자열과 Entity를 넣음
.setParameter("username", "teasun")
.getSingleResult();
assertThat(findUser.getUsername()).isEqualTo("teasun");
}
@Query (repository interface)
- @Query 의 인자값으로 간단하게 쿼리를 작성할 수 있습니다.
쿼리를 작성할때는 테이블명이 아니라 Entity 명으로 조회하게 됩니다.
→ 오타나 잘못된 변수명이 확인됨 - 변수 바인딩은 2가지 방법으로 할 수 있습니다.
방법1. 변수 순번 사용
public interface UserRepository extends JpaRepository<User, Long> {
@Query("SELECT u, u.password AS customField FROM User u WHERE u.username = ?1")
List<User> findByUsernameWithCustomField(String username, Sort sort);
@Query("SELECT u FROM User u WHERE u.username = ?1")
List<User> findByUsername(String username, Sort sort);
}
방법2. 변수명 사용
public interface UserRepository extends JpaRepository<User, Long> {
@Query("SELECT u, u.password AS customField FROM User u WHERE u.username = :username")
List<User> findByUsernameWithCustomField(String username, Sort sort);
@Query("SELECT u FROM User u WHERE u.username = :username")
List<User> findByUsername(String username, Sort sort);
}
'Organizing Docs > Java Docs' 카테고리의 다른 글
Coding 01 (0) | 2024.07.04 |
---|---|
SubQuery, JPAExpressions (0) | 2024.07.01 |
ORM (0) | 2024.06.28 |
Spring Data JPA (0) | 2024.06.28 |
페이징 (0) | 2024.06.28 |