[SPRING] Spring 통합 - 외부 쿼리 JDBC 쿼리
SPRINGSpring 통합 - 외부 쿼리 JDBC 쿼리
그것을 인라인 대신 jdbc 아웃 바운드 게이트웨이에서 큰 SQL 쿼리를 외부화하는 간단한 방법이 있습니까? 그 이유는 만들려는 커다란 쿼리가 많기 때문이며, 우리는이 파일들을 자신의 파일에 올려 놓거나 적어도 콩으로 외부화하려고합니다.
몇 가지주의 사항 :
우리가 다른 많은 아웃 바운드 게이트웨이를 갖게 될 것이라는 것을 고려할 때 이것을 더 잘 조직하는 방법에 대한 제안은 환영합니다 :)
예를 들어, 다음과 같이 "int-jdbc : outbound-gateway"요소에 SQL 인라인을 갖고 싶지는 않습니다.
<int-jdbc:outbound-gateway
data-source="datasource"
request-channel="reqChannel"
reply-channel="respChannel"
row-mapper="datamapper" max-rows-per-poll="1000"
query=" SELECT Field1, Field2, ManyOthers
FROM Table T
JOIN A ON A.id = T.id [... many other joins here ...]
WHERE SOMECONDITION=:payload">
</int-jdbc:outbound-gateway>
간단히:
<bean id="myCoolQuery" class="java.lang.String">
<constructor-arg>
<value>
<![CDATA[
SELECT Field1, Field2, ManyOthers
FROM Table T
JOIN A ON A.id = T.id [... many other joins here ...]
WHERE SOMECONDITION=:payload
]]>
</value>
</constructor-arg>
</bean>
<int-jdbc:outbound-gateway
data-source="datasource"
request-channel="reqChannel"
reply-channel="respChannel"
row-mapper="datamapper" max-rows-per-poll="1000"
query="#{myCoolQuery}">
</int-jdbc:outbound-gateway>
또한 bean 내부에서 사용되는 ": payload"매개 변수와도 작동합니다.
해결법
-
==============================
1.XML로 쿼리를 스프링 빈으로 정의 할 수 있습니다.
XML로 쿼리를 스프링 빈으로 정의 할 수 있습니다.
<bean id="exampleQuerySql" class="java.lang.String"> <constructor-arg> <value> <![CDATA[ select * from foo where whatever_ind = 'A' ]]> </value> </constructor-arg> </bean>
CDATA를 사용하면 쿼리 텍스트에 줄 바꿈, 꺾쇠 괄호 등이 포함될 수 있으므로 읽기 쉽고 SQL 도구에 직접 잘라 붙여 넣을 수 있습니다.
SpEL을 사용하여 Bean을 참조 할 수 있습니다.
-
==============================
2.예, 속성 파일에 넣을 수 있으며 속성 자리 표시 자 $ {...}를 사용하여 해결하거나 SpEL을 사용할 수 있습니다.
예, 속성 파일에 넣을 수 있으며 속성 자리 표시 자 $ {...}를 사용하여 해결하거나 SpEL을 사용할 수 있습니다.
"#{myQueryBean.queryOne}"
여기서 myQueryBean은 메소드가있는 클래스의 인스턴스 인
입니다. public String getQueryOne() {...}
또는 클래스의 정적 상수 ...
"#{T(foo.Queries).QUERY_ONE}" public static final String QUERY_ONE = "...";
from https://stackoverflow.com/questions/25556825/spring-integration-externalizing-jdbc-queries by cc-by-sa and MIT license