#chiroito ’s blog

Java を中心とした趣味の技術について

Seasar : Standalone Application+S2JDBC on Eclipse

目的

・Standalone Application+S2JDBCプロジェクトの作成
S2JDBC-GENによるクラスの自動作成
S2JDBCを使用してのDBアクセス
・S2Containerの利用した超簡単なサンプルソースの作成

環境

開発PC
Windows7
Eclipse Java EE IDE for Web Developers

DBサーバ
RDBMS : Oracle Database 11gR2
・IP : 192.168.0.105
・ポート : 1521
・SID : orcl
・ユーザ : SEASAR
・パスワード : SEASAR

プロジェクトの作成

プロジェクトの作成はDoltengを使用すると非常に簡単です。
DoltengEclipseにインストールされていない場合は[新規ソフトウェアのインストール...]からインストール可能です。

Eclipse上で[ファイル]-[新規]-[その他]
[Dolteng]-[Dolteng Project]を選択

[Create a Dolteng Project]ダイアログ
プロジェクト名: <任意>
Root Package Name: <任意>
Application Type: Standalone Application
JRE Container:Use Default JRE
Presentation: None(入力不可)
Persistence: S2JDBC
Server Management: None(入力不可)
Other Category Facets: <何も選択しない>

たったのこれだけでプロジェクトの作成が完了します。

JDBCのインストール

まずはojdbc6.jarをダウンロードします。
JDBC, SQLJ, Oracle JPublisher and Universal Connection Pool (UCP)

作成したプロジェクトを右クリックして[プロパティ]
[Javaのビルド・パス]-[ライブラリ]-[外部JARの追加]から落としたojdbc6.jarを追加します。

設定

初期設定ではDBの設定がH2用になっているためOracle用にjdbc.diconとs2jdbc.diconを修正します。
src/main/resources/jdbc.dicon

"http://www.seasar.org/dtd/components24.dtd">




"oracle.jdbc.driver.OracleDriver"


"jdbc:oracle:thin:@192.168.0.105:1521:orcl"

"SEASAR"
"SEASAR"


600
10
true




src/main/resources/s2jdbc.dicon

"http://www.seasar.org/dtd/components24.dtd">



class="org.seasar.extension.jdbc.manager.JdbcManagerImpl">
0
0
0
oracleDialect


テーブルの作成

自動生成するテーブルを作成します。
スキーマにある全てのテーブルのクラスが自動生成されるため注意して下さい。
CREATE TABLE "SEASAR"."EMPLOYEE"
(
"ID" VARCHAR2(20 BYTE) NOT NULL ENABLE,
"NAME" VARCHAR2(20 BYTE),
"AGE" NUMBER(3,0),
CONSTRAINT "EMPLOYEE_PK" PRIMARY KEY ("ID") USING INDEX
)

S2JDBCによるクラスの作成

s2jdbc-gen-build.xmlを右クリックして[実行]-[Antビルド...]を選択
構成の編集ダイアログの[ターゲット]タブでgen-entityだけを選択します。

src/main/java/フォルダ以下に下記ファイルが作成されます。
・SqlFiles.java
・entity/
 ・Names.java
 ・<テーブル名>.java
 ・<テーブル名>Names.java
・service/
 ・AbstractService.java
 ・<テーブル名>Service.java

サンプルソース

自動生成されたソースを使ったサンプルソースを作成します。
package com.chirokings;

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

import com.chirokings.entity.Employee;
import com.chirokings.service.EmployeeService;

public class Main {
public static void main(String[] args) {
//コンテナの初期化
SingletonS2ContainerFactory.init();
//Employeeテーブルにアクセスするコンポーネントを取得
EmployeeService es = SingletonS2Container.getComponent(EmployeeService.class);
//EmployeeテーブルからIDが1のデータを取得
Employee e = es.findById("1");
//名前を出力
System.out.println(e.name);
}
}
あとはこのファイルを右クリックで[実行]-[Javaアプリケーション]をクリックして実行します。