web-dev-qa-db-ja.com

Spring JDBCとプレーンJDBCの違いは?

Spring JDBCとJDBCの主な違いは何ですか?

19
user1127214

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機能を提供します。

24

1.)Spring jdbcモジュールはjdbcテクノロジーの上にある抽象化レイヤーであり、このレイヤーはjdbcプログラミングで使用されるボイラープレートコードを回避します。 2.)Spring ORMモジュールは、最上位のORMツールの抽象化レイヤーです。 3.)HibernateのようなORMツールを再び使用する場合、この春のORMレイヤーにはボイラープレートコードがあり、ORMツールのボイラープレートコードを回避します。

2
vikash kr saw

SpringFrameworkの最上位のJDBCレイヤーによって提供されるSpringJDBCの付加価値

  1. 接続パラメータを定義する
  2. 接続を開きます
  3. ステートメントを指定します
  4. ステートメントを準備して実行します
  5. 結果を反復処理するようにループを設定します(存在する場合)
  6. 反復ごとに作業を行う
  7. 例外を処理する
  8. トランザクションを処理する
  9. 接続を閉じます

基本的に、インフラストラクチャ/配管コードの管理や問題について心配する必要はなく、データとそのオブジェクトへのマッピングについて純粋に心配する必要はありません。

Springは、テンプレートパターンを利用してすべての低レベルの詳細を非表示にすると同時に、JDBCを拡張して操作するための拡張フックを提供します。

また、データベース例外用に明確に定義されたAPIがあります。これは、低レベルのJDBCAPIによって提供される例外階層と比較すると開発者にとって非常に便利です。

1
Santosh Gokak

私の意見では、JDBCはJDBCTemplateといくつかの機能を共有していますが、それらはまったく異なる可能性があります。 mainこの質問を一目見ただけで頭に浮かぶ違いは次のとおりです。

  • 膨大な量のデータを処理している場合、たとえば数百万(または数十億)行のレコードをデータベースに挿入する場合は、JDBCを使用することをお勧めします。 4分足らずで、JDBCステートメントとMySQLステートメントを連結して、さまざまな情報を含む100万行をデータベースに挿入しました。対照的に、JDBCテンプレートで同じことを行うにはおそらく10分以上かかります。

  • ただし、JDBCを使用している場合は、JDBCテンプレートを使用する場合と比較して、正しく処理するためにより多くのコードを記述する必要があります。 Tomasz Nurkiewiczはこの点をコードで示し、SantoshGokakはJDBCを使用する手順の概要を示しています。しかし、JDBCテンプレートはSpring Frameworkの一部であるため、舞台裏で暗黙のうちにもう1つ、Springの構成があります。 SpringのXML /アノテーション構成に慣れていない場合は、少し複雑になる可能性があります。JDBCは、より多くの手順が必要ですが、ある程度直感的です。

0
Weisi Zhan

Spring JDBC?私はSpringJDBCテンプレートをいくつか知っているだけです。

これらを使用すると、Springコンテナー内からJDBC機能にアクセスでき、接続管理や例外処理など、プレーンJDBCと比較していくつかの追加の簡略化が提供されます。

基本的に、Springはセットアップが難しいですが、開発は簡単です。そのため、すべては、対処している問題の範囲によって異なります。

0
Oleg Mikheev