0

そのようなコードで 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());
                    }
                });
4

1 に答える 1

1

春には閉じると思いますが、ドキュメントは言いません。メッセージをログに記録するか、閉じたときに例外をスローする InputStream ラッパーを作成することで、簡単にテストできます。

于 2012-06-08T11:00:58.110 に答える