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 |
Tags
- docker에 ubuntu
- 영속성컨텍스트
- 우아한테크코스 블랙잭
- bomblab
- 벌크연산
- 밤랩
- SpringDataJPA
- clearAutomatically
- Argos
- 우아한테크코스
- 회고
- 우분투
- 스프링 롬복
- 스프링부트배포
- 레벨인터뷰
- 배포스크립트
- unique result
- 검색api
- BDDMockito
- Mock
- @Param
- jpa
- ubuntu이미지
- 우테코
- ubuntu
- 우아한테크코스5기
- 자바 롬복
- @Modifying
- @Query
- NonUniqueResultException
Archives
- Today
- Total
Jeomxon's Tech Note
[Spring-Data-JPA] @Query의 장점, 그리고 연관된 JPQL의 단점 본문
spring-data-jpa에서는 @Query 어노테이션을 통해 JPQL을 사용할 수 있도록 기능을 제공한다.
@Query("select m from Member m where m.username = :username and m.age = :age")
List<Member> findUser(@Param("username") String username, @Param("age") int age);
이런 식으로 사용할 수 있다.
여기서 얼핏보면 @Query에 있는 string으로 이루어진 쿼리문이 JPQL처럼 단순 스트링쿼리라고 생각이 들었는데 다른 점이 있었다.
JPQL에서는 쿼리문에 문법 오류가 있으면 컴파일 타임에 에러를 잡아주지를 못한다.
따라서 런타임 시에 에러가 발생할 수 있는데 이는 치명적이다.
사용자가 특정한 기능을 사용하다가 도중에 문제가 발생할 수 있다는 것을 의미한다.
Spring-Data-Jpa가 제공하는 @Query어노테이션은 비슷하지만 다르다.
보기에는 똑같이 스트링 쿼리문처럼 보이지만 어플리케이션 로딩 시점에 쿼리문을 파싱하기 때문에 컴파일 타임에 문법오류를 잡을 수 있다. 이는 상당히 큰 장점이다. 컴파일 타임에 발생하는 에러는 개발자에 실행을 시키는 시점에 즉시 확인을 할 수 있기 때문이다.
런타임에 발생하는 에러는 사용자가 사용 도중에 발생할 수 있어서 컴파일 에러에 비하면 훨씬 위험하다.
실무에서도 자주 사용하는 어노테이션인만큼 잘 활용하여 사용하도록 하자
'Spring > JPA' 카테고리의 다른 글
[Spring-Data-Jpa] 벌크연산 시 주의해야할 점(Update, Delete등) (0) | 2022.08.04 |
---|