S2Daoの環境設定

   それでは、実際にS2Daoを使ってみましょう。まず、S2Daoの入手と設定から説明します。

ダウンロード

   SeasarプロジェクトのWebページ(http://www.seasar.org/)より、S2(Seasar2)およびS2Daoをダウンロードします。ここでは、執筆時点の最新版のS2.1.11およびS2DaoV1.0.18をダウンロードしました。

   ダウンロードしたファイルを適当なディレクトリに展開します。これらは、データベースサービスのように別途起動するタイプのツールではなく、JARファイルをアプリケーション内にコピー(あるいは直接外部のクラスパスを指定)して利用します。

Eclipseプロジェクトの作成

   プロジェクトは通常のJavaプロジェクトとして作成します。ここではmys2daoという名前で、プロジェクト・レイアウトは「別のソースおよび出力フォルダ」として作成しました。

必要なファイルのコピー

   プロジェクト以下に、次のようなファイルを作成していきます。
必要なファイルの準備
図3:必要なファイルの準備

   まずJARファイルをコピーします。プロジェクト直下にlibという名前のフォルダを作成し、クラスパスに必要なJARファイルをコピーします。コピーするJARファイルは以下のものです。

  • seasar2/lib以下のJARファイル
  • s2dao/libのs2-dao-xxx.jar

   その他に、JDBCドライバもコピーします。ここではHSQLDBを利用しますので、 seasar2/libにあるものをそのまま利用します(JDBCドライバはDBとバージョンが違うと動作しない場合があるので、正しくは、JDBCドラ イバは別にコピーした方がよい)。そして、コピーしたJARファイルをEclipseプロジェクトのクラスパスに通します。

   最後に設定ファイルをコピーします。s2dao/srcにある、以下のリストのファイルをsrcフォルダにコピーします。これらは自前で全部書いてもよいのですが、ここではサンプルのファイルを利用していきます。

  • dao.dicon
  • j2ee.dicon
  • log4j.properties

   以上で環境の準備は完了です。

S2Daoの利用

   S2Daoを利用する環境が整いましたので、DAO、DTOおよびクライアントの作成を行いましょう。

DBテーブル

   ここでは、データベースは第7回で作成したものをそのまま利用します。一応スキーマを示しておくと、以下のような簡単なテーブルです。

利用するDBテーブルのスキーマ

create table video (
title varchar(100) primary key,
price integer
);

DTOの作成

   このVIDEOテーブルに対応するDTOを作成します。ソースコードは以下のリストのようになります。このクラスは、title、priceという名前のプロパティー(ゲッター、セッター)を持つJavaBeansです。

   ここでTABLEという名前のstaticフィールドがありますが、これはこのクラスがVIDEOテーブルに対応することを示しています(定数で情 報を埋め込んでいるので「定数アノテーション」と呼ばれます)。なお、この場合、DTOクラス名とテーブル名が同じなので省略できます。 toString()はデバッグ用です。


リスト3:Video.java

package hoge;

public class Video {

public static final String TABLE = "VIDEO";

private String title;
private int price;

public String toString(){
return super.toString()
+ ",title=" + title
+ ",price=" + price
;
}

public int getPrice() {
return price;
}

public void setPrice(int price) {
this.price = price;
}

public String getTitle() {
return title;
}

public void setTitle(String title) {
this.title = title;
}
}

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30