2009-10-04 7 views
0

응용 프로그램의 통계 부분에는 자주 변경되고 다소 길어지는 쿼리가 몇 가지 있습니다. 두 가지 모두 IMHO 인수를 사용하여 소스 코드에서 쿼리를 제거하고 눈에 친숙한 형식으로 쉽게 편집 할 수 있고 QL 편집기에서 복사/붙여 넣기 할 수 있습니다. 이로 인해 JPA에서 명명 된 쿼리가 자격을 잃게됩니다.J2EE (특정 Seam)에서 쿼리를 외부화하는 권장 사례

환경은 Seam 응용 프로그램이지만이 질문은 일반적으로 J2EE에서 흥미로울 수 있습니다.

세 가지 솔루션이 있습니다 : 상대 정적 쿼리의 경우 Seam 관리 쿼리 홈을 사용할 수 있지만 매개 변수가 범위에없고 메서드 매개 변수로 전달되었을 때 매개 변수가있는 쿼리를 처리하는 것은 추악합니다.

내 현재 솔루션은 모든 쿼리를 Seam 메시지 파일에 넣고 메시지 배열을 통해 액세스하는 것입니다.

세 번째 방법은 어딘가에서 쿼리를 읽고 제공하는 자체 Seam 구성 요소를 만드는 것입니다.

어떻게 그러한 시나리오를 관리 했습니까? 나는 명백한 해결책을 놓쳤는가?

답변

1

오늘은 어쩌면이 당신이 몇 가지 아이디어를 찾을 수 있습니다, similar but not Seam specyfic question in SO 등장.

+0

위의 질문에 제시된 해결책과 동일한 해결책을 사용하여 약간의 수정을가했습니다. 하나의 파일에 각각 SQL 쿼리를 작성하고 파일을 maven 작업으로 속성 파일에 병합하고 seam 구성 요소를 통해 파일을 사용합니다. –

0
+0

응답을 주셔서 감사합니다. 제가 설명한 첫 번째 접근법입니다. IMHO에는 범위가 지정되지 않은 매개 변수화 (또는 그 부족)의 단점이 있습니다. –

+0

Groovy와 여러 줄 문자열을 사용할 수도 있습니다 (그루비 솔기 구성 요소를 만들 수 있습니다). 이 경우 모든 솔루션에는 단점이 있습니다. – IAdapter

+0

내 쿼리를 components.xml에 넣었습니다. 필자는 프로젝트별로 구성 요소를 분리하므로 특정 계층의 특정 프로젝트에서만 쿼리를 사용한다면 거기에 선언합니다. 엔티티 클래스, 서비스 클래스 또는 사용되는 다른 특정 위치에 XML 외부에서 외부화하기 위해 제출 된 JIRA 문제가 있습니다. @NamedQuery (name = "", query = "") ... 형식 구문과 매우 비슷합니다. –