2011-02-03 4 views
1

나는 ResultSet.CLOSE_CURSORS_AT_COMMITresultSetHoldability 파라미터 세트와 함께 제표를 작성하고 싶습니다 :Spring JDBC에서, statement에 RESULT SET HOLDABILITY를 설정하는 방법은 무엇입니까?

PreparedStatement stmnt = conn.prepareStatement(sql, resultSetType, resultSetConcurrency, 
    ResultSet.CLOSE_CURSORS_AT_COMMIT) 

...와의 prepareCall에 대해 동일합니다. 나는 현재 편리한 declareParameters()execute(Map paramValues) 메소드를 가지고 있기 때문에 Spring의 JdbcTemplateSimpleJdbcCall을 사용하고있다.

resultSetHoldability을 설정하는 가장 간단한 방법은 무엇입니까?

답변

2

가장 쉬운 방법은 자신의 첫 번째 인수로 PreparedStatementCreator 목적을 JdbcTemplate에 다양한 query 방법 중 하나를 사용하는 것입니다있는 연결 개체에 액세스 할 수 있습니다.

제공된 Connection에서 을 생성하는 객체를 PreparedStatementCreator 객체로 지정하고 반환합니다.

PrepatedStatementCreator psc = new PrepatedStatementCreator() { 
    public PreparedStatement createPreparedStatement(Connection conn) { 
     return conn.prepareStatement(sql, resultSetType, resultSetConcurrency, 
      resultSetHoldability); 
    } 
} 

jdbcTemplate.query(psc, ...); 
0

다음과 같은 방법을 사용할 수 있습니다.

execute(ConnectionCallback action) 

connectioncallback 당신이 setHoldability 방법

+0

다른 쿼리() 또는 call() 메서드를 호출하기 전에 내 자신의 연결 콜백을 사용하여 execute()를 호출해야한다는 것을 정확히 알고 있었습니까? 그리고 적절한 설정으로 연결을 사용합니까? – Infeligo

+0

nope - connectionCallback을 사용하여 원하는 모든 jdbc 조치를 수행하십시오. 이는 쿼리를 호출 할 때 execute를 호출 할 때 동일한 연결을 보장 할 수 없기 때문입니다. –

+0

그래서 커넥션을 잡아서 설정 한 다음 스프링이 정상적으로 수행 할 수있는 모든 작업을 수동으로 수행합니까? – Infeligo

관련 문제