Spring JDBCとJDBCの主な違いは何ですか?
5 に答える
JDBC を使用した簡単な例をいくつか示します。
final Connection connection = ds.getConnection();
try {
final Statement statement = connection.createStatement();
try {
final ResultSet resultSet = statement.executeQuery("SELECT COUNT(*) FROM Orders");
try {
resultSet.next();
final int c = resultSet.getInt(1);
} finally {
resultSet.close();
}
} finally {
statement.close();
}
} finally {
connection.close();
}
ただし、try-with-resources の場合ははるかに優れています。
try (
Connection connection = ds.getConnection();
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery("SELECT COUNT(*) FROM Orders");
) {
resultSet.next();
final int c = resultSet.getInt(1);
}
もちろん、共通コードを抽出して、テンプレート メソッドのデザイン パターンを使用することもできます。効果的に再発明しJdbcTemplate
ます:
final int c = new JdbcTemplate(ds).queryForInt("SELECT COUNT(*) FROM Orders");
また、Spring JDBC は、例外変換 (データベース/方言間のチェックSQLException
と違いは不要) と単純な ORM 機能を提供します。
Spring Framework の最上位 JDBC レイヤーによって提供される Spring JDBC 付加価値
- 接続パラメーターの定義
- 接続を開く
- ステートメントを指定する
- ステートメントの準備と実行
- 結果を反復処理するループを設定します (存在する場合)。
- 反復ごとに作業を行う
- 例外を処理する
- 取引を処理する
- 接続を閉じる
基本的に、インフラストラクチャ/配管コードの管理や負担について心配する必要はなく、データとそのオブジェクトへのマッピングについて純粋に心配する必要はありません。
Spring はテンプレート パターンを利用してすべての低レベルの詳細を隠し、JDBC を拡張して操作するための拡張フックを提供します。
また、データベース例外用に明確に定義された API があります。これは、低レベルの JDBC API によって提供される例外階層と比較すると、開発者にとって非常に使いやすいものです。
春のJDBC? 私が知っている Spring JDBC テンプレートは 2 つだけです。
これらを使用すると、Spring コンテナー内から JDBC 機能にアクセスでき、接続管理や例外処理など、プレーンな JDBC と比較していくつかの簡素化が提供されます。
基本的に、Spring はセットアップが難しいですが、開発は簡単です。したがって、すべては対処している問題の範囲によって異なります。
私の意見では、JDBC は JDBCTemplate といくつかの機能を共有していますが、まったく異なる場合があります。この質問を一目見ただけで頭に浮かぶ主な違いは次のとおりです。
データベースに数百万 (または数十億) 行のレコードを挿入するなど、膨大な量のデータを処理している場合は、JDBC を使用することをお勧めします。4 分もかからずに、JDBC と MySQL ステートメントの連結を使用して、さまざまな情報を含む 100 万行をデータベースに挿入しました。対照的に、JDBC テンプレートで同じことを行うには、おそらく 10 分以上かかるでしょう。
ただし、JDBC を使用している場合は、JDBC テンプレートを使用する場合と比較して、より多くのコードを記述する必要があります。Tomasz Nurkiewicz はこの点をコードで説明し、Santosh Gokak は JDBC を使用する手順の概要を提供しています。しかし、舞台裏でもう 1 つ暗黙的に行われていることがあります。それは、Spring の構成です。JDBC テンプレートは Spring Framework の一部であるためです。Spring の XML/Annotation 構成に慣れていない場合、少し複雑かもしれませんが、JDBC はより多くの手順を必要としますが、ある程度直感的です。