Spring JDBC によるデータベースアクセスについて調べた時のメモです。
元ネタは Spring 3.2.x のドキュメント「14. Data access with JDBC 」の「14.1.1 Choosing an approach for JDBC database access」の節です。
- JdbcTemplate はクラシックな Spring JDBC のアプローチであり、最も人気があります。 この「最下層」のアプローチとその他の全てのアプローチは内部で JdbcTemplate を使用しており、全てのアプローチはジェネリクスや可変長引数などの Java 5 の機能をサポートするようにアップデートされています。
- NamedParameterJdbcTemplate は、従来の JDBC の “?” を使用したプレースホルダの代わりに、名前付けされたパラメータが使用できるように JdbcTemplate をラップしたものです。このアプローチは、SQL ステートメントに複数のパラメータが含まれる場合、よりコードが読みやすく利用が容易になります。
この他にも、SimpleJdbcInsert / SimpleJdbcCall、RDBMS Objects including MappingSqlQuery / SqlUpdate / StoredProcedure というアプローチがあるようですが、まずは上記の2つを使えるようになると良さそうです。
JdbcTemplate と NamedParameterJdbcTemplate の違いは、SQL 内に埋め込むパラメータの指定に「?」マークのプレースホルダを使う(JdbcTeamplte)のか、「:id」のように名前を付けたプレースホルダが使える(NamedParameterJdbcTemplate)という点です。 名前が付いたプレースホルダを使った方が、コーディング時の間違いの可能性も減ると思われます。