2013-02-04 1 views
0

JPA2.0 (Hibernate 4를 통해)을 사용하여 EntityManager.find (java.lang.Class entityClass, java)를 사용하여 쿼리 조건이 기본 키인 레코드를 데이터베이스에 쿼리 할 수 ​​있습니다. lang.Object primaryKey). 그러나 쿼리 조건이 기본 키가 아닌 경우 (예 : 도시 값이 '런던'인 모든 레코드를 선택) TypedQuery를 만들고 SQL 문을 명시 적으로 제공해야합니까? 입양해야 할 모범 사례가 있습니까?기본 키를 사용하지 않는 JPA 쿼리

+0

은 TypedQuery에 대한 의견을 제시하고 쿼리에 전달되는 내용을 제안합니다. 그건 SQL이 아니에요. JPQL – DataNucleus

+0

그 점을 이해합니다.하지만 TypedQuery를 사용해야한다고 생각하는데 다른 방법이 없습니까? 기쁜 마음으로, 나는 Hibernate/JPA를 최대로 사용하고 최선의 방법을 채택하고 싶다. –

답변

0

JPA Criteria API은 동적 쿼리 (jpql 또는 sql)를 사용하여 얻을 수없는 수준의 컴파일시 안전을 제공합니다. 특히 많은 조건들이 (선택 필드, 조건부 부질의 ...에) 들어가기 시작하면 실수하기가 아주 쉬워 질 수 있습니다.

Criteria API는 (특히 간단한 쿼리의 경우) 작성하기가 더 복잡 할 수 있으며, 정말 강력하고 사용하기 쉬운 언어로 만들기 위해 조건 API 주위에 배관 코드를 만들어야합니다. 그것은 실제로 상자에서 그것을 제공하지 않습니다.

일부 사용자는 Criteria API 작업을 좋아하지만 일부 사용자는 명명 된 쿼리/JPQL을 선호합니다.

+0

그게 내가 필요한 것 뿐이야, 고마워. CriteriaQuery 접근 방식을 사용하겠습니다. –

관련 문제