<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:util="http://www.springframework.org/schema/util"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
<!--
  データアクセス層のアプリケーションコンテキスト定義。
  "applicationContext.xml"で定義されているビジネス層のオブジェクトからアクセスされる。
  (web.xmlの"contextConfigLocation"参照)。
-->

<!-- ======================================== データソース定義 -->
  <!-- 
     WTPを利用してTomcatを起動する場合、<ContextRoot>/META-INF/context.xmlに
     データソースの接続情報を設定する。
     またTomcatでJDBC接続を行う場合、各種JDBCドライバのjarにクラスパスを通すこと。
  -->
  <bean id="TerasolunaSampleDataSource"
        class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName">
      <!-- Tomcatの例  -->
      <value>java:comp/env/jdbc/TerasolunaSampleDataSource</value>
      <!-- Tomcat以外のAPサーバの例 -->
      <!-- 
      <value>jdbc/TerasolunaSampleDataSource</value>
      -->
    </property>
  </bean>

<!-- ======================================== トランザクション定義 -->
  <!-- トランザクションマネージャの定義 -->
  <bean id="transactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="TerasolunaSampleDataSource" />
  </bean>

  <!-- =============== トランザクションの定義 =============== -->
  <!-- トランザクションインタセプタの定義 -->
  <!-- 
    トランザクションを設定するメソッドと実行モードを定義する。
    transaction-manager="transactionManager" の設定は省略可能。
  -->
  <tx:advice id="transactionInterceptor" >
    <tx:attributes>
      <tx:method name="execute*" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
    </tx:attributes>
  </tx:advice>

<!-- ======================================== iBATIS定義 -->
  <!-- SqlMap定義 -->
  <bean id="sqlMapClient"
        class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
    <property name="configLocation" value="WEB-INF/sqlMapConfig.xml">
    </property>
    <property name="dataSource" ref="TerasolunaSampleDataSource" />
  </bean>

  <!-- 照会系のDAO定義 -->
  <bean id="queryDAO" 
      class="jp.terasoluna.fw.dao.ibatis.QueryDAOiBatisImpl">
	<property name="sqlMapClient" ref="sqlMapClient"/>
  </bean>

  <!-- 更新系のDAO定義 -->
  <bean id="updateDAO" 
      class="jp.terasoluna.fw.dao.ibatis.UpdateDAOiBatisImpl">
	<property name="sqlMapClient" ref="sqlMapClient"/>
  </bean>

  <!-- ストアドプロシジャ用のDAO定義 -->
  <bean id="spDAO" 
      class="jp.terasoluna.fw.dao.ibatis.StoredProcedureDAOiBatisImpl">
	<property name="sqlMapClient" ref="sqlMapClient"/>
  </bean>
  
  <!-- ローハンドラ用のDAO定義 -->
  <bean id="queryRowHandleDAO"
        class="jp.terasoluna.fw.dao.ibatis.QueryRowHandleDAOiBatisImpl">
    <property name="sqlMapClient" ref="sqlMapClient" />
  </bean>

  <!-- DBメッセージリソース用DAO定義 -->
  <!-- 
    applicationContext.xmlでDBメッセージリソースの定義がされている場合は、
    下記のコメントアウトを解除してDBメッセージリソース用DAOの設定を有効にすること。
   -->
  <!-- 
  <bean id="DBMessageResourceDAO" 
        class="jp.terasoluna.fw.message.DBMessageResourceDAOImpl">
    <property name="dataSource" ref="TerasolunaSampleDataSource"/>
    <property name="tableName"      value="MESSAGES"/>
    <property name="codeColumn"     value="CODE"/>
    <property name="messageColumn"  value="MESSAGE"/>
    <property name="languageColumn" value="LANGUAGES"/>
    <property name="countryColumn"  value="COUNTRY"/>
    <property name="variantColumn"  value="VARIANT"/>
  </bean>
  -->
</beans>
