JPA/Hibernate : JPA 쿼리의 코드 기반 유효성 검증
문제
올바른 방법은 프로그래밍 방식으로 JPA 쿼리를 검증하는 것입니다. Hibernate는 엔티티의 모든 주석 기반이라는 이름의 쿼리를 확인합니다. 그러나 오류를 확인하기 위해 프로그래밍 방식으로 빌드 된 JPA 쿼리 에서이 검증 루틴을 어떻게 호출 할 수 있습니까?
@Entity public class Foo { @Id public int id; public String name; }
main(...) { Query q = getEntityManager().createQuery("select e from " + Foo.class.getName() + " e where e.name = 'x' "); // validate q here }
해결책
하지 않다. 통합은 프로덕션 환경과 동일한 스키마를 가진 실제 데이터베이스를 사용하여 코드를 벗어난 지옥을 테스트합니다.
그것에 대해 생각하십시오 : 당신이 오르플 링 쿼리를 만들면, 그것은 프로그래밍 버그. 정보와 어떤 관계가 있습니까? 사용자에게 JPA 쿼리가 잘못되었다고 말합니까? 현실적으로 할 수있는 것은 오류를 기록하고 사용자에게 "나쁜 일이 발생했습니다"라고 말하는 것입니다. 어쨌든 나중에 로그를 확인할 때 기형 쿼리라는 것을 알게 될 것입니다 ...
편집하다
또한 조사 할 가치가 있습니다 createQuery()
잘못된 데이터를 먹이게하여 전화하십시오 - Javadoc 여기 그것을 던질 수 있다고 제안합니다 HibernateException
, 그리고 나는 그것을 검증하는 것 외에 줄로 무엇을 할 수 있는지 잘 모르겠습니다 ...
다른 팁
Createquery를 사용할 수 있거나 JPQL을 작성하는 동안 클래스 이름을 넣어야합니다.
제휴하지 않습니다 StackOverflow