職業訓練覚え書き

45日目(Spring Framework3)

Spring JDBC

DAOパターンでの煩雑な記述が簡略化できる

 

利用方法

Templateクラスを利用する

  • JdbcTemplate
  • NamedParameterJdbcTemplate

 

利用の準備
  1. Connector-J
  2. Tomcat
  3. pom.xml
  4. Bean定義ファイル

このうちConnector-JとTomcatの設定は以前設定したものを流用

 

pom.xml

spring-jdbc(JDBC用)
spring-context(BeanFactory用)
spring-web(サーブレット用)

 

Bean定義ファイル

アノテーションの利用宣言文
 <context:annotation-config />

コンポーネントスキャン範囲
 <context:component-scan base-package="dao" />
 <context:component-scan base-package="controller" />

名前空間jee
 <jee:jndi-lookup id="dataSource" jndi-name="jdbc/mydb"/>

 

<bean class="org.springframework.jdbc.core.JdbcTemplate">
 <constructor-arg ref="dataSource" />
</bean>

<bean class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
 <constructor-arg ref="dataSource" />
</bean>

 

ついでに、動的Webプロジェクトのweb.xmlにも追記(これも必要らしい)
<context-param>
 <param-name>contextConfigLocation</param-name>
 <param-value>/WEB-INF/beans.xml</param-value>
</context-param>
<listener>
 <listener-class>org.springframework.web.context.ContextLoaderListener</listener- class>
</listener>

※ただし動的Webプロジェクトで作業しない場合web.xmlの記述はいらないらしい

 

Templateクラスのメソッド
  • queryForObject() 単体カラムデータの取得
  • queryForMap()  1レコード(1行分)の取得
  • queryForList()  複数レコード(複数行)の取得

※基本は共通

 

以降は、以前作成したDAOのパターンの書き換えを行う。

 

  • BeanPropertyRowMapper
  • BeanPropertySqlParameterSource

の自動変換が非常に楽…なので、データベースとデータのやり取りを行うクラスのフィールド名・データベースのカラム名を合わせることの重要性を再確認。

 

今日はここまで。
週明けということと、土曜日に高尾山に登ったり日曜にハイカーボデイを設けたりで疲れが出てた一日。
しっかり復習しないと。