S2Buriを触ってみる

AndroMDAはちょっとわけあってしばらく保留。

その前に

http://www.techscore.com/tech/Seasar/Buri/2.html#buri-2.1

を参考にS2Buriを触ってみることにした。
目標は、DBFluteと連携させて簡単なサンプルを作成する。

目処は10月末にしてみよう。

http://d.hatena.ne.jp/j5ik2o/20071003

この記事を見て、ちょっと刺激をうけてしまいました。。

Buri2章 Buri 入門

記事を見ていてつまった点を覚書いておく。

DB設定

特に上記記事に書いてなかったので記載。
自分はpostgresを使用しているので、以下のように設定。

(1)jdbc.dicon 修正

<!-- コメントアウト
	<component name="xaDataSource"
		class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
		<property name="driverClassName">
			"org.apache.derby.jdbc.EmbeddedDriver"
		</property>
		<property name="URL">
			"jdbc:derby:db/buri;create=true"
		</property>
	</component>
-->
    :
    :
<!-- 有効化 -->
	<!-- for PostgreSQL -->
	<component name="xaDataSource"
		class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
		<property name="driverClassName">
			"org.postgresql.Driver"
        </property>
        <property name="URL">
          "jdbc:postgresql://localhost/buri"
        </property>
        <property name="user">"postgres"</property>
        <property name="password">"postgres"</property>
    </component>

(2) DBにデータベース作成

pgAdminやコマンドラインより、buri というDBを作成しておく

(3) テーブルとテストデータ作成

以下SQLburiデータベースに実行する。

\\BURI_ROOT\db\createdb_postgre.sql ← テーブル作成sql
\\BURI_ROOT\db\example_postgre.sql  ← テストテーブルsql

これでBrui2章の動作をJUnitで確認できる。

Buri3章 基本的な開発の概要

テストデータ作成

2章で作成したDBに以下SQLを実行
※説明ではDerby用しかなかったので、一応postgreSQLバージョンを記載しておく。

CREATE TABLE Document
(
    -- 文書 ID (値は 1 から始まる連番を自動生成).
    id               BIGINT NOT NULL,

    -- 文書のタイトル.
    title VARCHAR(64) NOT NULL,

    -- 文書の内容.
    content VARCHAR(1024) NOT NULL
);

CREATE SEQUENCE documentID
 START WITH 1
 INCREMENT BY 1
;

また、mavenで使用するpom.xmlはderbyではなくpostgresを使用する。
このため、以下のように記載しておく。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.example.docmanage</groupId>
  <artifactId>docmanage</artifactId>
  <packaging>jar</packaging>
  <version>1.0</version>
  <name>docmanage</name>

  <repositories>
    <repository>
      <id>maven.seasar.org</id>
      <name>The Seasar Foundation Maven2 Repository</name>
      <url>http://maven.seasar.org/maven2</url>
    </repository>
  </repositories>

  <build>
    ...
  </build>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <version>8.2-504.jdbc3</version>
    </dependency>
    <dependency>
      <groupId>geronimo-spec</groupId>
      <artifactId>geronimo-spec-j2ee</artifactId>
      <version>1.4-rc4</version>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.14</version>
    </dependency>
    <dependency>
      <groupId>org.seasar.buri</groupId>
      <artifactId>s2-buri</artifactId>
      <version>0.3.1</version>
    </dependency>
  </dependencies>
</project>

また、Eclipseで開発できるように以下コマンドをサンプルのルートディレクトリで実行しておく

mvn eclipse:eclipse
クラス作成

toStringメソッドを加えないと、標準出力で結果を確認できないため加えておく。

public class DocumentDto
{
      :
      :
	public String toString(){
		StringBuffer sb = new StringBuffer();
		sb.append(id);
		sb.append(",");
		sb.append(title);
		sb.append(",");
		sb.append(content);
		return sb.toString();
	}
}
Log4jの設定

以下のようなLog4jを用意し、resoucesフォルダの下に配置

log4j.category.org.seasar=INFO, C
log4j.additivity.org.seasar=false

log4j.category.examples=INFO, C
log4j.additivity.examples=false

log4j.appender.C=org.apache.log4j.ConsoleAppender
log4j.appender.C.Target=System.out
log4j.appender.C.ImmediateFlush=true
log4j.appender.C.layout=org.apache.log4j.PatternLayout
log4j.appender.C.layout.ConversionPattern=%-5p %d [%t] %m%n

log4j.rootLogger=INFO, A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n

DEBUGからINFOに変えてあるので、余分なログを出力しなくなる。

以上を踏まえて記事にしたがって実装したところ、記事どおり動作確認できた。

さて、S2Buriを使ったアプリの簡単な実装方法がわかったので、簡単な課題を元にDBFluteも使ってアプリを作成してみたい。