s2dao


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

S2DAO - * Seaserの O/Rマッピング

   * Seaserの O/Rマッピング
         o 公式サイト
         o diconファイル例
               + hoge.dicon
               + jdbc.dicon 例
               + 自動登録したい場合の hoge.dicon 記述例
         o S2DAO 呼び出し

Seaserの O/Rマッピング

公式サイト


diconファイル例

S2DAOを利用するためには diconファイルをいくつか作成する必要がある。まず コンテナを作成する時に呼び出す例から

hoge.dicon

<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container//EN"
"http://www.seasar.org/dtd/components.dtd">

<components namespace="dao">
   	<include path="dao.dicon"/>

<!-- ここにDAOコンポーネントを追加していく -->
	<component class="AccountDao"> 
       <aspect>dao.interceptor</aspect>
   </component>

</components>

dao.diconをincludeすると dao.dicon,j2ee.dicon, jdbc.diconが呼び出される

jdbc.diconファイルは用意されていないので自分でつくる

jdbc.dicon 例

<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container//EN"
"http://www.seasar.org/dtd/components.dtd">

<components>
   <!-- トランザクションの設定 -->
   <include path="jta.dicon"/>
   
   
   <!--- データベース接続の設定 -->
<component name="xaDataSource"
   class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
   <property name="driverClassName">
       "com.mysql.jdbc.Driver"
   </property>
   <property name="URL">
       "jdbc:mysql://43.253.252.115/accelia?useUnicode=true"
   </property>
   <property name="user">"accelia"</property>
   <property name="password">"accelia"</property>
</component>


<!-- DBCP コネクションプールの設定 -->

<component name="connectionPool"
           class="org.seasar.extension.dbcp.impl.ConnectionPoolImpl">
       <property name="timeout">600</property>
       <property name="maxPoolSize">10</property>
       <property name="allowLocalTx">true</property>
       <destroyMethod name="close"/>
   </component>
   
   
   <!-- DI 具象クラス設定 -->
   <component name="dataSource"
      class="org.seasar.extension.dbcp.impl.DataSourceImpl"/>
   <component name="resultSet"
   	class="org.seasar.extension.jdbc.impl.BasicResultSetFactory" />
   <component name="statement"
   	class="org.seasar.extension.jdbc.impl.BasicStatementFactory" />
</components>

自動登録したい場合の hoge.dicon 記述例

<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container//EN"
"http://www.seasar.org/dtd/components.dtd">

<components namespace="dao">
   	<include path="dao.dicon"/>

<component
	class="org.seasar.dao.impl.FieldAnnotationReaderFactory"/>

	<component name="interceptor"
	class="org.seasar.dao.interceptors.S2DaoInterceptor"/>


	<!-- AutoRegister for DAO -->
<component class="org.seasar.framework.container.autoregister.FileSystemComponentAutoRegister">

<initMethod name="addClassPattern">
	<arg> "DAO"</arg> <!-- 登録したいコンポーネントのパッケージ名-->
			<arg> ".*Dao"</arg> <!-- 登録したいコンポーネント名(正規表現 ",区切り可") -->
</initMethod>
</component>

<component class="org.seasar.framework.container.autoregister.AspectAutoRegister">
<property name="interceptor">dao.interceptor </property>
<initMethod name="addClassPattern">
	<arg>"DAO"</arg>
	<arg>".*Dao"</arg>
</initMethod>
</component>


</components>

S2DAO 呼び出し

これだけ

S2Container con = S2ContainerFactory.create("moge.dicon");
con.init(); // auto registerする場合は必須
AccountDao ad = (AccountDao)con.getComponent(AccountDao.class);
System.out.println(ad.getDatas().size());