무엇을 사용 : JPQL 또는 Criteria API?
내 Java 응용 프로그램은 객체 지속성을 위해 JPA를 사용하고 있습니다. 비즈니스 도메인은 매우 간단합니다 (3 개의 클래스 만 지속되며 각각 3-5 개의 속성이 있음). 쿼리도 간단합니다. 문제는 JPQL 또는 Criteria API 중 어떤 접근 방식을 사용해야합니까?
나는 이것이 이미 여기에서 다루어 졌다고 확신하지만 기존 질문을 찾을 수 없습니다. 그래서, 여기에 질문에 대한 나의 관점이 있습니다.
- JPQL 쿼리를 쓰기 / 읽기가 더 쉽습니다.
- Criteria API는 동적 쿼리를 작성하는 데 유용합니다.
기본적으로 Hibernate : Criteria vs. HQL 에서 찾을 수 있습니다.
그러나 언급 할 가치가있는 JPA 2.0 Criteria API와 Hibernate의 Criteria API 사이에는 한 가지 중요한 차이점이 있습니다. JPA 2.0 Criteria API는 유형이 안전한 API 이므로 컴파일 시간 확인, 코드 완성, 더 나은 리팩토링 지원 등을 제공합니다. 그러나 I 이점이 JPQL의 사용 용이성보다 크다는 것을 알지 마십시오.
요약하면, 동적 쿼리 (예 : 다중 기준 검색 기능)를 제외하고는 JPQL을 선호합니다.
관련 질문
더 많은 리소스
이전에 비슷한 질문에 답변했으며 커뮤니티의 이익을 위해 여기에 답변을 다시 게시하겠습니다. 아래의 내 대답에 비해 Application Server를 사용하고 있다고 가정합니다.
Criteria API는 SQL 주입을 방지하는 형식이 안전한 방식으로 동적 SQL 쿼리를 구성 할 수 있도록하기 위해 존재합니다. 그렇지 않으면 오류가 발생하기 쉽고 보안 위험이있는 SQL 문자열을 함께 연결할 수 있습니다. 즉, SQL 주입. Criteria API를 사용하려는 유일한 시간입니다.
쿼리가 기본적으로 동일하게 유지되지만 다른 매개 변수 만 허용해야하는 경우 더 간단하고 사전 컴파일 된 주석이 달린 @NamedQueries를 사용해야하며 보조 캐시 내에서 캐시 할 수 있으며 서버 시작 중에 유효성을 검사 할 수 있습니다.
이것이 기본적으로 @NamedQueries와 비교하여 기준 쿼리에 관한 경험 법칙입니다. 내 경험상 Criteria API가 거의 필요하지 않지만 드물게 필요한 경우가 있다는 것이 좋습니다.
도움이 되었기를 바랍니다.
다음과 같은 다른 새로운 프레임 워크도 고려할 수 있다고 생각합니다.
이것은 쿼리를 작성하는 안전하고 현명한 방법을 제공하며 표준이 아니지만 다음 표준이이 기술 중 하나를 기반으로 할 것이라고 확신합니다.
표준을 유지하려면 이것을 무시하십시오.
안녕
참고 URL : https://stackoverflow.com/questions/3858406/what-to-use-jpql-or-criteria-api
'Development Tip' 카테고리의 다른 글
git commit의 --date 매개 변수의 형식은 무엇입니까? (0) | 2020.11.18 |
---|---|
이 C 프로그램은 두 가지 주요 기능으로 어떻게 컴파일되고 실행됩니까? (0) | 2020.11.18 |
복사없이 데이터 프레임을 data.table로 변환 (0) | 2020.11.18 |
[Vue warn] : 속성 또는 메서드가 인스턴스에 정의되어 있지 않지만 렌더링 중에 참조됩니다. (0) | 2020.11.18 |
Java 메소드는 기본적으로 정적이어야합니까? (0) | 2020.11.17 |