2016-11-09 11 views
0

私はDAO層にSpring jdbcTemplateを使用しています。そして、私は一度データベースをヒットする単一のクエリで実行することを、少なくとも2つのSQL文があります:jdbcTemplateは1つのバッチで複数のSQL文を実行します。

String INSERT_SQL = "INSERT INTO \"ADDRESS\" (id_registred_user, " 
              + "address, " 
              + "city, " 
              + "region, " 
              + "country) " 
              + "VALUES (?, ?, ?, ?, ?)"; 

String UPDATE_SQL = "UPDATE \"REGISTRED_USER\" SET id_address = ? " 
        + "WHERE id_registred_user = ?"; 
を今の私は@Transactional内にこれをやっている:

jdbcTemplate.update(INSERT_SQL, args...); 
jdbcTemplate.update(UPDATE_SQL, args...); 

私が知っています単純なjdbcにはaddBatch()メソッドがありますが、jdbcTemplateを使用してこれらの2つのSQL文を1つのバッチでどのように実行できますか? jdbcTemplateにaddBatch()があるのですか?

ありがとうございます。

+0

[複数のデータベース操作にSpring JdbcTemplateを使用する]の可能な複製(http://stackoverflow.com/questions/2564128/using-spring-jdbctemplate-for-multiple-database-operations) – pleft

+0

@pleft彼の質問は私が理解できるものから複数のデータベースについて。 –

+0

@TimBiegeleisen私が提供したリンクは、「同じ接続内で複数のSQLクエリをどのように実行するのですか? – pleft

答えて

4

両方のクエリを連結して、;を区切り記号として追加することはできますが、これらのクエリは「アトミック」になりません。言い換えれば、あなたは思うようにすぐには実行されませんが、1つずつ2つのテンプレートを実行するように、次々に実行されます。違いはありません。

操作のアトミック性を保証するには、トランザクションを使用する必要があります。トランザクションは、トランザクションコミット時にクエリによって行われたすべての変更を一度に適用することができます。

関連する問題