powerdee.com
Google
 
このサイト内 Web
 
カウンタ

STEP3.ビジネス層

INDEX

1.サービスクラスのインターフェイスを作成

プレゼンテーション層に公開するインターフェイスを定義します。このサンプルでは、DAOと同じ内容になっています。

package com.powerdee.service;

import java.util.List;

import com.powerdee.entity.BookInfo;

public interface IBookInfoService {
    public BookInfo getBookInfo(String isbn) throws Exception;
    public String saveBookInfo(BookInfo bookInfo) throws Exception;
    public void deleteBookInfo(String isbn) throws Exception;
    public List selectAllBookInfo() throws Exception;
}

2.トランザクション管理の実装

サービスクラスでは、Springのトランザクション管理を利用します。 STEP1.EIS層のときに作成した、Bean定義ファイル([APPHOME]/WEB-INF/applicationContext.xml )に追記します。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
    "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>

  <bean id="propertyConfigurer" 
      class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
      <list>
        <value>/WEB-INF/database.properties</value>
      </list>
    </property>
  </bean>

  <bean id="dataSource" 
      class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName">
      <value>${database.connection.driver_class}</value>
    </property>
    <property name="url">
      <value>${database.connection.url}</value>
    </property>
    <property name="username">
      <value>${database.connection.username}</value>
    </property>
    <property name="password">
      <value>${database.connection.password}</value>
    </property>
  </bean>

  *** ここから追加部分 ***
  <!-- Transaction -->
  <bean id="transactionManager" 
      class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource"><ref bean="dataSource"/></property>
  </bean>

  <bean id="txProxyTemplate" lazy-init="true"
      class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
    <property name="transactionManager">
      <ref bean="transactionManager"/>
    </property>
    <property name="transactionAttributes">
      <props>
        <prop key="save*">PROPAGATION_REQUIRED</prop>
        <prop key="delete*">PROPAGATION_REQUIRED</prop>
        <prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
      </props>
    </property>
  </bean>

  <bean id="bookInfoService" parent="txProxyTemplate">
    <property name="target">
      <bean class="com.powerdee.service.BookInfoServiceImpl">
        <property name="bookInfoDao">
          <ref bean="bookInfoDao"/>
        </property>
      </bean>
    </property>
  </bean>
  *** ここまで ***

</beans>

3.サービスクラスの実装

DAOのメソッドを呼び出すだけのシンプルな実装です。DIによってDAOクラスとは疎結合になっているのが確認できると思います。

package com.powerdee.service;

import java.util.List;

import com.powerdee.dao.IBookInfoDao;
import com.powerdee.entity.BookInfo;

public class BookInfoServiceImpl implements IBookInfoService {
    private IBookInfoDao bookInfoDao;
    
    public void setBookInfoDao(IBookInfoDao bookInfoDao) {
        this.bookInfoDao = bookInfoDao;
    }

    public BookInfo getBookInfo(String isbn) throws Exception {
        return bookInfoDao.getBookInfo(isbn);
    }
    
    public String saveBookInfo(BookInfo bookInfo) throws Exception {
        return bookInfoDao.saveBookInfo(bookInfo);
    }
    
    public void deleteBookInfo(String isbn) throws Exception {
        bookInfoDao.deleteBookInfo(isbn);
    }
    
    public List selectAllBookInfo() throws Exception {
        return bookInfoDao.selectAllBookInfo();
    }
}

おすすめ書籍


SpringによるWebアプリケーションスーパーサンプル

著者:村山 雅彦、阪田 浩一、奥 清隆
出版社:ソフトバンククリエイティブ(2006-07-29)
価格:¥3,990(税込)
Light Weight Java―JSF/Hibernate/SpringによるフレームワークでWebアプリケーションの開発効率向上

著者:岡本 隆史、金子 崇之、吉田 英嗣、権藤 夏男
出版社:毎日コミュニケーションズ(2005-04)
価格:¥3,360(税込)
Apache Maven 2.0入門 Java・オープンソース・ビルドツール

著者:野瀬 直樹、横田 健彦
出版社:技術評論社(2006-12-13)
価格:¥2,499(税込)
Spring2.0入門 Java・オープンソース・Web開発自由自在

著者:株式会社豆蔵、長谷川 裕一、岩永 寿来、伊藤 清人、大野 渉、麻野 耕一
出版社:技術評論社(2006-12-28)
価格:¥3,654(税込)


ページTopへ / ▲Homeへ