在这样的代码中传递给Spring JDBC lobCreator.setBlobAsBinaryStream(,,)后是否需要手动关闭java中的InputStream(bean.getContentAsStream())?
getJdbcTemplate().execute(
"INSERT INTO file (" +
"id, " + //1
"FILE_DATA) " + //2
" VALUES (?, ?)",
// lobhandler is instance of org.springframework.jdbc.support.lob.OracleLobHandler
new AbstractLobCreatingPreparedStatementCallback(lobhandler){
@Override
protected void setValues(PreparedStatement ps, LobCreator lobCreator) throws SQLException, DataAccessException {
ps.setString(1, bean.getRecordId());
lobCreator.setBlobAsBinaryStream(ps, 2, bean.getContentAsStream(), (int) bean.getContentSize());
}
});
最佳答案
我预计 spring 会关闭它,但文档没有说。您可以通过创建一个记录消息或在关闭时引发异常的 InputStream 包装器来轻松进行测试。
关于java - 传递到 Spring JDBC LobHandler 后关闭 Java InputStream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10946849/