JPA 프로젝트에서 5 개의 관련 엔티티의 데이터가 포함 된 테이블을 표시해야합니다. JPA가 없으면 몇 가지 기준에 따라 5 개의 데이터베이스 테이블을 결합하고 필터링하는 SQL 쿼리를 작성할 수 있습니다. 필터링 기준과 관련된 필드가 첫 번째 엔터티의 필드 만 있다고 가정합니다. JPA 사용하기 첫 번째 엔티티의 필터링 된 인스턴스를로드하고 마지막 엔티티까지 속성을 탐색 할 수 있습니다. fecttype = eager 주석을 사용하거나 실수를 할 수 없으면 데이터베이스에 대한 쿼리 수가 폭발 할 수 있습니다. 그런 경우 가장 좋은 방법은 무엇입니까? 나는 실행될 SQL 쿼리에 대해 엄격한 제어권을 갖고 싶습니다. 그래서이를 최적화 할 수 있습니다.하지만 조인 SQL 쿼리를 직접 작성하면 '이전'결과 집합을 사용하여 데이터를 검색해야합니다. ?여러 조인의 결과를 효율적으로 표시
답변
JPA의 내장 쿼리 언어 인 JPQL을 사용할 수 있습니까? (이것은 JOIN 연산자를 확실히 가지고 있습니다.) 이것은 표준 SQL이 아니기 때문에 비슷합니다. 따라서 JPQL 문서를 철저히 읽으십시오. 네, 여전히 자바 코드에 임베드 된 일반 텍스트 쿼리입니다.하지만 부끄러운 일입니다.하지만 자바가 개발 프로세스를 지원할 수있는 정도입니다.
여기에서 가장 큰 이점은 쿼리 결과로 엔티티 개체를 가져 오는 것입니다. 여전히 개체에서 개체를 캐스팅해야하지만. 또한 쿼리 문자열에서 직접 객체 (레코드)와 그 멤버 변수 (속성)를 사용할 수 있기 때문에 좋은 이전 JDBC에서 한 단계 올라간다.
또한 Criteria API를 선택할 수도 있지만 솔직히 말해서 내 경험이 그다지 좋지 않았습니다. 구문은 매우 끔찍한 것이므로 기본적으로 저급 쿼리를 직접 작성해야합니다. 이것은 분명히 최악의 경우 Java이지만 ... 최소한 쿼리를 포함하는 문자열은 코드에서 제거 될 수 있습니다. 나는 그것이 그것의 가치가있다라고 확신하지 않는다.
확인 자세한 내용과 예제 페이지 :
초보자를위한 진정한 악몽 인 API에 대해 동의합니다. 내 아이디어는 다음과 같습니다 : 아주 소수의 행이있는 '괴물'보기를 만들어서 엔터티를 만듭니다 (summarydata라고 부름). 조인을 사용하여 JPQL 쿼리를 만들고 동적 필터링 조건을 추가합니다. summarydata로 캐스팅하고 jsf h : datatable로 표시합니다. 그것은 작동해야합니까, 그렇지 않아야합니까? – Filippo
- 1. Executor 서비스에서 여러 결과를 효율적으로 처리하는 방법
- 2. 여러 레코드를 효율적으로 업데이트하십시오.
- 3. 쿼리 결과를 가로로 표시
- 4. 조인의 하위 쿼리
- 5. ASP.NET에서 대형 GridView를 효율적으로 표시
- 6. 왼쪽 외부 조인의 문제점
- 7. 검색 결과를 jQGrid에 표시
- 8. 쿼리 결과를 DataGrid보기에 표시
- 9. 여러 개의 이메일을 효율적으로 전송하기
- 10. 여러 레코드를 효율적으로 삭제하는 중
- 11. 조인의 HQL 서브 쿼리
- 12. 쿼리 조인의 차이점
- 13. 자바에서 여러 이미지 표시
- 14. 데이터베이스의 결과를 표시 할 수 있도록 여러 스피너에서 어떻게 입력합니까?
- 15. EF4.1 코드 첫째, 여러 매핑 조인의 탐색 속성
- 16. 효율적으로
- 17. mysql 결과를 객체로 표시 하시겠습니까?
- 18. 데이터베이스의 쿼리 결과를 증분으로 표시
- 19. 오라클 :이 조인의 문제점은 무엇입니까?
- 20. 조인의 테이블 정렬 : SQL 튜닝
- 21. SQL -이 조인의 차이점은 무엇입니까?
- 22. 여러 HTMLPurifier 구성을 효율적으로 처리하는 방법
- 23. 여러 개의 동일한 데이터베이스를 효율적으로 관리하고 있습니까?
- 24. HBase에서 여러 행을 효율적으로 삭제하는 방법
- 25. javax.script를 사용하여 여러 스크립트를 효율적으로 실행하는 방법
- 26. TSQL - 여러 변수를 효율적으로 설정하는 방법
- 27. 파일을 여러 클라이언트에 효율적으로 배포하는 방법은 무엇입니까?
- 28. SQLite 테이블을 여러 레코드로 효율적으로 업데이트
- 29. 여러 서버에서 효율적으로 웹 페이지 만들기
- 30. Rails에서 여러 수준의 데이터를 효율적으로 가져 오기
당신이 당신의 데이터베이스에보기의를 만들 수 있습니까? –
예, 할 수 있습니다. 불행히도 필터링 기준은 동적이므로보기 안에 넣을 수 없거나 간단하게 수행 할 수 없습니다. 내 관심사는 필터링 프로세스에 관한 것입니다. 처음에는보기를 만든 다음 필터를 적용하면 관심이있는 행뿐만 아니라 매우 큰 테이블에 가입해야합니다. 아래 답변에 대한 의견도 꼭 읽어보십시오. – Filippo
좋아요, 정적보기와 동적 쿼리를 함께 사용하면 위험 할 수 있습니다. 프레임 워크 또는 데이터베이스에 대한 자세한 정보를 제공 할 수 있습니까? –