2008-10-17 5 views
4

JDBC 용 JDBC 지원을 사용하고 있습니다. JdbcTemplate (또는 SimpleJdbcTemplate)을 사용하여 쿼리를 실행하고 결과를 ResultSet의 인스턴스로 가져 오려고합니다. 내가 이것을 달성 볼 수 있습니다Spring-JDBC의 getResultSet

유일한 방법은 사용 :

String sql = "select * from...."; 
SqlRowSet results = jdbcTemplate.queryForRowSet(sql); 
((ResultSetWrappingSqlRowSet) results).getResultSet(); 

이 접근법의 명백한 단점은 그것이 SqlRowSet의 구현 유형에 대해 (주조에 의해) 가정을 만들기 위해 저를 필요로한다는 것이다, 그러나 더 좋은 방법이 있습니까? 결과는 디스플레이를위한 재스퍼 보고서로 바로 전달되기 때문에

배경 정보는 ...

I가 ResultSet보다는 원두의 모음으로 결과를 얻을하려는 이유입니다. 즉, Java bean은 ResultSet에 각 행을 임시로 저장하는 것 이외에는 사용되지 않으며 가능한 경우 모든 Jasper 보고서에 대해 이러한 bean을 작성하지 않는 것이 좋습니다.

건배,

답변

1

그냥 쿼리를 수행하고 결과를 얻고 싶다면 돈, 왜 일반 JDBC를 사용하고 결과 집합을 잡아하지? 이 작업을 수행하기 위해 봄이 필요하지 않음을 주목하십시오.

Connection c = ... 
    c.prepareCall("select ...").getResultSet(); 

게다가, 개체를 DTO로 사용하면 이점을 얻을 수 있습니다. 데이터 액세스 또는 보고서 도구가 변경된 경우에도 DTO 클래스를 변경할 필요가 없습니다. jdbc 대신 xquery를 사용하거나 jasper 대신 apache-poi를 사용한다고 가정 해 봅시다.

0

내부에서 Jasper를 호출하거나 ResultSetExtractor와 같은 JdbcTemplate 콜백 또는 Jasper에 ResultSet을 전달하기 위해 JDBC를 사용하십시오. Jasper를 호출 할 때 어느 쪽이든 데이터베이스에 대한 연결은 보고서가 끝날 때까지 여전히 활성화되어 있습니다 ..