Spring FraamewarkとData Studio(二)を統合する.


Spring JdbcTemplateで同じアプリケーションを実現します.
Spring JdbcTemplateのサポートにより、冗長コードを低減し、Spring管理特性によるメリットも得られます.
  • 変更されていない内容:
  • すべてのユーザがインターフェースを定義する.
  • 変更された内容:
  • DAO実装ファイルは非常に小さくなりました.繰り返したすべてのJDBCコードをSpringに移動しました.
  • JDBCリソースの割り当てとリリースの必要がないため、リソースの漏洩が発生しない.
  • はSQLExceptionsを説明する必要がない.SpringはDB 2などの主要なDBMSにこの仕事を完成させました.
  • このアプリケーションは、特定のDBMSやデータアクセスの実現に限定されない.編集可能な設定テキストファイルによって制御されます.
  • 最後のセクションからのビームとインターフェースの種類を再利用します.下のコンポーネントを追加または変更する必要があります.
  • より簡単なDAO実装——AcceountDao.java
  • アプリケーションを少し修正して、DAOオブジェクトを直接的にインスタンス化する代わりにSpringプロファイルをロードできるようにします.
  • は、データソースとDAOによって実現されるプロファイル——appication Contact.xml、jdbc.propertiesを動的に構成することができる.
  • アプリケーションは設定ファイルのみをロードし、SpirngにDAOを実装します.DATA Source配置(DBMSベンダーや接続情報など)はすでにDAO実現コードから逸脱し、Springプロファイルに配置されています.
     
    DAO実現
    テンプレートJDBCコードはSpring JdbcTemplateに置き換えられました.したがって、コードを実現することによって接続を獲得し、SQL異常を獲得し、結果セットを巡回したり、リソースを整理したりする必要はなくなりました.簡単なqueryForList(String sql)は、リターンマップリストを呼び出す.RowMapperによって、戻ってくる行をbeanクラスにマッピングすることができます.リスト5は、Spring JdbcTemplateを使用したDAOを提供します.
     
    リスト5.AcceountDao.java
                        
    package com.test;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.List;
    import org.springframework.jdbc.core.JdbcTemplate;
    import org.springframework.jdbc.core.RowMapper;
    import org.springframework.jdbc.core.support.JdbcDaoSupport;
    
    public class AccountDao extends JdbcDaoSupport implements AccountData{
    @SuppressWarnings("unchecked")
    public List<Account> getAccounts()
    {
      JdbcTemplate daoTemplate = this.getJdbcTemplate();
      RowMapper mapper = new RowMapper (){
        public Object mapRow(ResultSet rs,int rowNum) throws SQLException {
          Account act = new Account();
          act.setActno(rs.getShort("ACTNO"));
          act.setActkwd(rs.getString("ACTKWD"));
          act.setActdesc(rs.getString("ACTDESC"));
          return act;
        }
      };
      return daoTemplate.query(sql, mapper );
    }
    }
    
     
     
     
    アプリケーションは、Springプロファイルをロードする必要があり、Springフレームを起動し、構成によって定義されたDAOを取得し、前のようにgetAccounts()をインターフェースで宣言する方法を呼び出す.リスト6はこのアプリケーションを示している.
    明細書6.AcceountApp.java
                        
    package com.test;
    import java.util.List;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    public class AccountApp {
      public static void main(String[] args) {
    ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext(
      new  String[] {"applicationContext.xml"});		
        AccountData dao = (AccountData) ac.getBean("ACT_DAO");
        List<Account> actList = dao.getAccounts();
        for (Account act : actList )
          System.out.println(" ACTNO=" + act.getActno() + 
            " ACTKWD="+ act.getActkwd() + " ACTDESC="+act.getActdesc());
      }
    }
    
     
    Springはプロファイルを用いて初期化し、フレームを起動します.本教程では、簡単な構成ファイル「appication Contect.xml」(リスト7を参照)を使用して、属性ファイルからデータソース情報を取得し、このアプリケーションで使用されるDAO実装クラスを定義します.リスト7は、Springプロファイルの一例である.
    明細書7.appication Contect.xml
                        
    
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" 
    "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
    
    <beans>
    <!-- replaces ${...} placeholders with values from properties files -->
      <bean id="propertyConfigurer"
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
          <list>
            <value>jdbc.properties</value>
          </list>
        </property>
      </bean>
    
      <!-- Define datasource -->
      <bean id="DB2DataSource" class="org.apache.commons.dbcp.BasicDataSource"
    destroy-method="close">
        <property name="driverClassName"
          value="${jdbc.driverClassName}" />
        <property name="url" value="${jdbc.url}" />
        <property name="username" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
      </bean>
    
    <!-- Configure DAO -->
      <bean id="ACT_DAO" class="com.test.AccountDao">
        <property name="dataSource">
        <ref bean="DB2DataSource" />
        </property>
      </bean>
    </beans> 
    
    				
    リスト8は、例示的な接続属性ファイルである.
    明細書8.jdbc.properties
                        
    jdbc.driverClassName=com.ibm.db2.jcc.DB2Driver
    jdbc.url=jdbc:db2://localhost:50000/sample:traceFile=C:/sample.log;
      traceLevel=-1;traceFileAppend=true;
    jdbc.username=USERNAME
    jdbc.password=PASSWORD
    
     
    本教程の開始時に述べたように、データアクセス以外にも、Springは事務管理などの他の特性をサポートしています.リスト9のコードをコンフィギュレーションContect.xmlに追加し、Springの声明的な事務管理を有効にします.
    明細書9.事務管理器
                        
    <bean id="transactionManager" 
    class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="DB2DataSource"/>
    </bean>
    
    
     
     この例は以下のjarを使用する必要がある.
  • spring.jar
  • commons-loging.jar
  • commons-dbcp.jar
  • commons-pool.jar