Chinaunix首页 | 论坛 | 博客
  • 博客访问: 29952674
  • 博文数量: 708
  • 博客积分: 12163
  • 博客等级: 上将
  • 技术积分: 8240
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-04 20:59
文章分类

全部博文(708)

分类: Java

2008-12-22 14:44:31

1.初期設定

にて構成した各ファイルの中身をみていきたいと思います。
サンプルでは、簡単なselect文を作成するための構成となっています。

パッケージ名 クラス名 説明
snowhiro S2Dao_sample10.java サンプルのメインクラス
snowhiro ProjectDao.java サンプルのS2Dao用のインターフェース
snowhiro Project.java サンプルのS2Sao用のjavaBean(テーブルとの関連付け)
snowhiro s2Dao.dicon 設定ファイル(コンポーネントの登録等)
デフォルトパッケージ j2ee.dicon 設定ファイル(S2Dao用)
デフォルトパッケージ jdbc.dicon 設定ファイル(DBの接続先等)
デフォルトパッケージ jta.dicon 設定ファイル(トランザクション用)

では個別のクラスおよび設定ファイルの内容を見てみます。

S2Dao_sample10.java

package snowhiro;

import org.seasar.framework.container.S2Container;
import org.seasar.framework.container.factory.SingletonS2ContainerFactory;

/**
 * S2Daoのサンプルメインクラス
 */

public class S2Dao_sample10 {

   
// 設定ファイルのPath
   
private static final String PATH = "snowhiro/s2Dao.dicon";
   
   
/**
     * メインクラス
     * @param args 引数
     */

   
public static void main(String[] args) {
       
System.out.println("S2Dao_sample10 開始");
       
       
// 設定ファイルを読み込む.
        SingletonS2ContainerFactory
.setConfigPath(PATH);
       
       
// 初期化する.
        SingletonS2ContainerFactory
.init();
       
       
// コンテナを取得する.
        S2Container container
= SingletonS2ContainerFactory.getContainer();
       
       
ProjectDao pjDao = (ProjectDao) container.getComponent(ProjectDao.class);

        pjDao
.selectProject();        
   
}

}
       

mainクラスでは、S2Dao用のコンテナを取得し実行しています。

Project.java

package snowhiro;

import org.seasar.dao.annotation.tiger.Bean;

@Bean(table="PROJECT")
public class Project {
   
   
public Integer id;
   
   
public String pjName;
   
}      
       

Project.javaでは、対象のテーブルとのマッピングを記載しています。
@Bean(table="PROJECT")
の部分で対象のテーブルと対応しているということを記載しています。
また各インスタンス変数は、DBの各カラムをS2の機能であるpublic フィールドを用いて記載しています。

ProjectDao.java

package snowhiro;

import org.seasar.dao.annotation.tiger.S2Dao;

@S2Dao
(bean = Project.class)
public interface ProjectDao {

   
public Project selectProject();
}      
       

ProjectDao.javaでは、Data Access Object用のインターフェースです。
@S2Dao(bean = Project.class)の部分では、JavaBeansとの関連付けの定数宣言を行っています。 selectProject();はselect文を発行するためのメソッドとなります。

s2Dao.dicon

xml version="1.0" encoding="UTF-8"?>
"">
<components>
       
<include path="dao.dicon"/>
       
<include path="j2ee.dicon"/>

       

       
<component name="traceInterceptor" class="org.seasar.framework.aop.interceptors.TraceInterceptor"/>

       

   
<component
       
class="org.seasar.framework.container.autoregister.FileSystemComponentAutoRegister">
       
<property name="autoNaming">
         
<component class="org.seasar.framework.container.autoregister.DefaultAutoNaming"/>
       
property>
       
<initMethod name="addClassPattern">
         
<arg>"snowhiro"arg>
         
<arg>".*Dao"arg>
       
initMethod>
   
component>

   

   
<component class="org.seasar.framework.container.autoregister.AspectAutoRegister">
       
<property name="interceptor">j2ee.requiredTxproperty>
                       
<initMethod name="addClassPattern">
                       
<arg>"snowhiro"arg>
                       
<arg>".*Dao"arg>
               
initMethod>
       
component>    
   
<component class="org.seasar.framework.container.autoregister.AspectAutoRegister">
       
<property name="interceptor">dao.interceptorproperty>
                       
<initMethod name="addClassPattern">
                       
<arg>"snowhiro"arg>
                       
<arg>".*Dao"arg>
               
initMethod>
       
component>

components>  
       

s2Dao.diconでは、S2で管理するコンポーネントの自動登録およびアスペクトを記載しています。
s2Dao.diconの名前は何でもかまいません。
サンプルメインクラスの
private static final String PATH = "snowhiro/s2Dao.dicon";
にて対象のdiconファイルを呼び出しています。
また、S2Dao用のアスペクトとしてdao.interceptorを、
トランザクション用のアスペクトとして後述するj2ee.diconのrequiredTxを記載しています。
他のアスペクトと同様に、自動登録が可能です。

j2ee.dicon

xml version="1.0" encoding="UTF-8"?>
"">
<components namespace="j2ee">
       
<include path="jta.dicon"/>
       
<include path="jdbc.dicon"/>

       
<component name="requiredTx"
               
class="org.seasar.extension.tx.RequiredInterceptor"/>
       
<component name="requiresNewTx"
               
class="org.seasar.extension.tx.RequiresNewInterceptor"/>
       
<component name="mandatoryTx"
               
class="org.seasar.extension.tx.MandatoryInterceptor"/>
       
<component name="notSupportedTx"
               
class="org.seasar.extension.tx.NotSupportedInterceptor"/>
       
<component name="neverTx"
               
class="org.seasar.extension.tx.NeverInterceptor"/>
components>          
       

j2ee.diconでは、トランザクション関係の設定を記載しています。
このファイルはトランザクション関係の記載をしており、今回のサンプルでは特にいじっていません。
S2Dao.diconのDaoインターフェイスにrequiredTxを記載しています。

j2ee.dicon

xml version="1.0" encoding="UTF-8"?>
        "">
<components namespace="jdbc">
       
<include path="jta.dicon"/>

       

       
<component
               
name="resultSetFactory"
               
class="org.seasar.dao.pager.PagerResultSetFactoryWrapper">
               
<arg>
                       
<component class="org.seasar.extension.jdbc.impl.BasicResultSetFactory"/>
               
arg>
               
<property name="useScrollCursor">trueproperty>
       
component>
       
<component class="org.seasar.extension.jdbc.impl.ConfigurableStatementFactory">
               
<arg>
                       
<component class="org.seasar.dao.pager.PagerStatementFactory"/>
               
arg>
               
<property name="fetchSize">100property>
               

       
component>

       

       
<component name="xaDataSource"
               
class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
               
<property name="driverClassName">
                        "oracle.jdbc.driver.OracleDriver"
               
property>
               
<property name="URL">
                        "jdbc:oracle:thin:@localhost:1521:XE"
               
property>
               
<property name="user">"user_name"property>
               
<property name="password">"pass_word"property>
               
<initMethod name="addProperty">
                       
<arg>"includeSynonyms"arg>
                       
<arg>"true"arg>
               
initMethod>
       
component>

       
<component name="connectionPool"
               
class="org.seasar.extension.dbcp.impl.ConnectionPoolImpl">
               
<property name="timeout">600property>
               
<property name="maxPoolSize">10property>
               

               
<property name="allowLocalTx">trueproperty>
               
<destroyMethod name="close"/>
       
component>
       
<component name="dataSource"
               
class="org.seasar.extension.dbcp.impl.DataSourceImpl"/>
components>
       

j2ee.diconではDBの接続先等の設定を記載します。 URLと、user名、パスワードを記載しています。

jta.dicon

xml version="1.0" encoding="UTF-8"?>
        "">
<components namespace="jta">
       
<description>
                Seasar2 が提供する JTA 実装 (S2JTA) を使用するための設定ファイルです.

                この設定ファイルでは,以下の全てのトランザクション属性がサポートされます.
                ・REQUIRED
                ・MANDATORY
                ・NEVER
                ・REQUIRES_NEW
                ・NOT_SUPPORTED
       
description>

       
<component name="UserTransaction"
               
class="org.seasar.extension.jta.UserTransactionImpl"/>

       
<component name="TransactionManager"
               
class="org.seasar.extension.jta.TransactionManagerImpl"/>

       

       
<component name="TransactionSynchronizationRegistry"
               
class="org.seasar.extension.jta.TransactionSynchronizationRegistryImpl"/>

       

       
<component
               
class="org.seasar.extension.tx.adapter.JTATransactionManagerAdapter"/>
components>
       

Seasar2 が提供する JTA 実装 (S2JTA) を使用するための設定ファイルです. このファイルは特に設定ファイルをいじる必要はありません。

では早速サンプルのメインクラスを実行してみたいと思います。

S2Dao_sample10 開始
DEBUG S2Containerを作成します。path=snowhiro/s2Dao.dicon
DEBUG S2Containerを作成します。path=dao.dicon
DEBUG S2Containerを作成します。path=j2ee.dicon
DEBUG S2Containerを作成します。path=jta.dicon
DEBUG S2Containerを作成しました。path=jta.dicon
DEBUG S2Containerを作成します。path=jdbc.dicon
DEBUG S2Containerを作成しました。path=jdbc.dicon
DEBUG S2Containerを作成しました。path=j2ee.dicon
DEBUG S2Containerを作成しました。path=dao.dicon
DEBUG S2Containerを作成しました。path=snowhiro/s2Dao.dicon
INFO  Running on [ENV]product, [DEPLOY MODE]Normal Mode
DEBUG トランザクションを開始しました。tx=[FormatId=4360, GlobalId=1215123725920/0, BranchId=]
DEBUG 物理的なコネクションを取得しました
DEBUG 論理的なコネクションを取得しました。tx=[FormatId=4360, GlobalId=1215123725920/0, BranchId=]
DEBUG 論理的なコネクションを閉じました。tx=[FormatId=4360, GlobalId=1215123725920/0, BranchId=]
DEBUG 論理的なコネクションを取得しました。tx=[FormatId=4360, GlobalId=1215123725920/0, BranchId=]
DEBUG 論理的なコネクションを閉じました。tx=[FormatId=4360, GlobalId=1215123725920/0, BranchId=]
DEBUG 論理的なコネクションを取得しました。tx=[FormatId=4360, GlobalId=1215123725920/0, BranchId=]
DEBUG SELECT PROJECT.id, PROJECT.pjname FROM PROJECT
DEBUG 論理的なコネクションを閉じました。tx=[FormatId=4360, GlobalId=1215123725920/0, BranchId=]
DEBUG トランザクションをコミットしました。tx=[FormatId=4360, GlobalId=1215123725920/0, BranchId=]	
	

ログの中に
DEBUG SELECT PROJECT.id, PROJECT.pjname FROM PROJECT
とあり、SQLが実行されているのがわかります。
以上で初期設定は完了です。

阅读(3885) | 评论(0) | 转发(0) |
0

上一篇:HSQL

下一篇:关于2009

给主人留下些什么吧!~~