JdbcTemplate
はトランザクションマネージャではありません。
これはJDBCコアパッケージの中心クラスです。 JDBCの使用を簡素化し、一般的なエラーを回避するのに役立ちます。コアJDBCワークフローを実行し、SQLを提供し結果を抽出するアプリケーションコードを残します。このクラスは、SQLクエリまたは更新を実行し、ResultSetsに対する反復処理を開始し、JDBC例外をキャッチし、org.springframework.daoパッケージで定義された汎用的で有益な例外階層に変換します。道による
TransactionTemplate
は、プログラムによるトランザクション境界およびトランザクション例外処理を簡素化
テンプレートクラスです、また、トランザクションマネージャではありません。既存のトランザクションがあるかどうかを判断
PlatformTransactionManager
(及びAbstractPlatformTransactionManager
の他のサブクラス)は、トランザクション・マネージャあります。
は、適切な伝播動作を適用します。
は、必要に応じてトランザクションを中断し、再開します。
は、コミット時にロールバック専用フラグをチェックします。
は、ロールバック(実際のロールバックまたはロールバックのみの設定)に適切な変更を適用します。
は同期コールバックを登録します(トランザクション同期がアクティブな場合)。あなたの代わりに、宣言的トランザクションは、あなたがprogrammeticallyそれを実装したい扱う場合に使用されるTransactionTemplate
、とは対照的に、 だから、このクラスは、実際のトランザクションを処理するための責任があります。 (かなり古いですが、
thisブログを参照してください、宣言的と手動の違いが表示されます)
引用符Spring 3 Referenceから引用します。
注:HibernateTemplate、JmsTemplateなど、他の* Templateクラスもあります。それらはすべて同じパターンに従います。書くべきコードの量を大幅に減らすテンプレートクラスです。呼び出されたボイラープレートコードはそれらによって処理されます。例(hereから):JdbcTemplate
なし
:
private DataSource dataSource;
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
}
public void insert(Customer customer){
String sql = "INSERT INTO CUSTOMER " +
"(CUST_ID, NAME, AGE) VALUES (?, ?, ?)";
Connection conn = null;
try {
conn = dataSource.getConnection();
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, customer.getCustId());
ps.setString(2, customer.getName());
ps.setInt(3, customer.getAge());
ps.executeUpdate();
ps.close();
} catch (SQLException e) {
throw new RuntimeException(e);
} finally {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {}
}
}
}
そしてJdbcTemplate
と:
private DataSource dataSource;
private JdbcTemplate jdbcTemplate;
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
}
public void insert(Customer customer){
String sql = "INSERT INTO CUSTOMER " +
"(CUST_ID, NAME, AGE) VALUES (?, ?, ?)";
jdbcTemplate = new JdbcTemplate(dataSource);
jdbcTemplate.update(sql, new Object[] { customer.getCustId(),
customer.getName(),customer.getAge()
});
}
あなたは春マニュアルの古代のバージョンの読み取りを停止する必要があります。 2.0.xは数年前です。 – skaffman
私は調べるべき最新のバージョンは何ですか? –
3.0.5は最新の安定です – abalogh