truncateを実行したい場合、やる方法は見つからない。
DOMAのソースを読んで、SelectBuilder、INSERTBUILDER、UPDATEBUILDER、DELETEBUILDERを提供しているけど、truncate関連する物がない。
ネットで調べると、SEAZARのFAQにこういう回答がある。
CREATE/DROP/TRUNCATEなどのSQLを実行したい †
exexuteQuery/executeUpdateで実行できるSQLなら、実行することができます。その場合、メソッドの名前をexexuteQueryなら検索、executeUpdateなら挿入/更新/削除の命名規則にあわせてください。
ただし、オラクルは、DML以外をPreparedStatementで実行すると不安定になるので、S2Daoから実行するのは、やめたほうが良いと思います。
truncateなどは、Statementで実行してください。
#DataSourceから自前で処理するという意味です
executeUpdateしか使えないそうだ。
例があまりない。
自分を試した結果は以下のようだ。
public int truncate(String sql){
StringBuffer sqls = new StringBuffer();
sqls.append(sql);
Connection connection = JdbcUtil.getConnection(config.getDataSource());
try {
PreparedStatement preparedStatement = connection.prepareStatement(sqls.toString());
try {
int updatedRows = preparedStatement.executeUpdate();
} catch (SQLException e) {
異常処理
} finally {
JdbcUtil.close(preparedStatement, config
.getJdbcLogger());
}
}catch(SQLException e){
異常処理
} finally {
JdbcUtil.close(connection, config.getJdbcLogger());
}
return 0;
}
この中、configは、springからJDBC構成だ。
この関数でDMLも実行できると思う。
alter table tablename NOLOGGING
を使って試しました。
もっと調べて、実際にUpdateBuilderでDMLを実行できる。
そうしたら、上の原始的な方法が必要はない。
0 件のコメント:
コメントを投稿