目的
・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を使用すると非常に簡単です。DoltengがEclipseにインストールされていない場合は[新規ソフトウェアのインストール...]からインストール可能です。
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
src/main/resources/s2jdbc.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
"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;あとはこのファイルを右クリックで[実行]-[Javaアプリケーション]をクリックして実行します。
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);
}
}