私はSpring3.xの初心者です。私はSpring DAOのサポートを学んでいます。 NamedParameterJdbcTemplateとJdbcTemplateの違いを知りたい。 どれがパフォーマンスで最も優れているか。いつNamedParameterJdbcTemplate に行くのか、いつJdbcTemplateに行くのですか。あなたの答えは、私のような初心者には大いに役立ちます。NamedParameterJdbcTemplateとJdbcTemplate
28
A
答えて
4
パフォーマンスには差がありません。 NamedParameterJdbcTemplateは、名前付きパラメータを使用できる便利な機能です。 本当に興味がある人は、すぐにダウンロードできるソースコードを見てください。 ソースコードを読んでいると、私がフォーラムで得た回答にもっと自信があります。
53
JdbcTemplateを使用するときは、SQLに代入したい各パラメーターに対してプレースホルダーを持つSQLを渡します。あなたは、コード内のパラメータを割り当てるときは、配列の引数に渡す必要があり、それらは彼らがこのように、配列に表示される順序に慣れる:
Object[] args = new Object[] {"x", "y"};
String sql = "select * from foo where a = ? and b = ?";
jdbcTemplate.query(sql, args, resultSetExtractor);
ので、実行しますSQLがselect * from foo where a = 'x' and b = 'y'
です。
NamedParameterJdbcTemplateを使用すると、パラメータプレースホルダに名前を割り当ててマップを渡すことができるため、テンプレートはマップ名をプレースホルダに一致させることができます。だからあなたのコードは次のようになります。
String sql = "select * from foo where a = :mya and b = :myb";
Map<String, Object> argMap = new HashMap<String, Object>();
argMap.put("mya", "x");
argMap.put("myb", "y");
namedParameterJdbcTemplate.query(sql, argMap, resultSetExtractor);
最初の例と同じSQLを生成する(とクエリを実行している時間がかかる部分であり、引数の挿入のパフォーマンスは、非問題です。)。
考えられるのは、引数を名前で照合するのは、特定の順序で指定するよりも誤りが起こりにくいということです。実際のアプリケーションでは、通常、SQLはDAOコードとは別のファイルに格納されています。間違った順序でパラメータを誤って取得するのは簡単です。
関連する問題
- 1. Spring FrameworkでNamedParameterJdbcTemplateよりもJdbcTemplateを使用する利点は何ですか?
- 2. Java SpringはJdbctemplateをautowiresしますが、NamedParameterJdbcTemplateは入れません
- 3. NamedParameterJdbctemplateのフェッチサイズ?
- 4. JPAとSpring JdbcTemplate
- 5. JdbcTemplateとSimpleJdbcTemplate
- 6. TransactionTemplateとJdbcTemplate
- 7. NamedParameterJdbcTemplate in Spring(3.0.5.RELEASE)
- 8. 、JDBCTemplate
- 9. Spring NamedParameterJDBCTemplateプリペアドステートメントの再利用
- 10. Spring 4.1.6 JdbcTemplateブロッキングとシンクロナス?
- 11. Spring jdbcTemplateとPreparedStatement。パフォーマンスの差
- 12. エラーjdbcTemplate
- 13. 春JdbcTemplate
- 14. Spring JdbcTemplate alter session
- 15. は、データベースにJdbcTemplate
- 16. 春のブートJdbctemplate
- 17. Spring JDBCTemplate - Concurrent Calls
- 18. 春JdbcTemplateは
- 19. JdbcTemplate:文字列
- 20. jdbcTemplate batchUpdate issue
- 21. Spring jdbcTemplate Junit
- 22. HSQLDB、LocalDateTime、JdbcTemplate
- 23. NamedParameterJdbcTemplateを使用した一括挿入
- 24. SpringブートでNamedParameterJdbcTemplateをオートワイヤリングする方法
- 25. LocalDateTimeをnamedParameterJdbcTemplateで保存します。
- 26. QueryDSL SQLとJDBCTemplateの間のパフォーマンステスト
- 27. Spring JDBCTemplate ResultSetExtractorとSpringバッチItemReaderの違い
- 28. java Spring JDBCTemplate - where句
- 29. java.sql.Statement.EXECUTE_FAILED Spring JdbcTemplateのシナリオ
- 30. JdbcTemplate isLast()の返却
なぜjavadocを読んでいないのですか?その違いが何であるか説明できるかもしれないと思いませんか?パフォーマンスに関しては、クエリが作成されて実行される方法はそれほど重要ではありません。重要なのはクエリそのものです。 –