Java初心者が超俊敏にWebアプリを作る方法
連載インデックスへ

最終回 流れるようにSQLっぽくO/RマッピングできるS2JDBC


株式会社パワーエッジ
新田 智啓(newta
2008/3/18

Eclipseプラグイン「Dolteng」のScaffoldという自動生成機能やSeasar 2.4HOT deploy機能を利用して、DBの参照・更新・削除ができるSAStrutsのWebアプリを作ります。Java初心者だけでなくStrutsに慣れた開発者も必見です
今回の主な内容

注意! 「Doltengの現在のバージョンについて」
超便利なJDBC、「S2JDBC」とは?
S2JDBCでDB操作をしてみよう
S2JDBCを利用した超簡単なトランザクション管理
実はDoltengよりも良い?「S2JDBC-Gen」とは
Seasar 2.4で、あなたも超俊敏なWebアプリ開発を

 超俊敏にJavaのWebアプリケーションを作るための便利なツールを紹介する本連載も今回で最終回です。

 前回の「EL式を拡張したSAStrutsタグ/ファンクションは超便利」では、SAStrutsを利用するうえでJSP記述に便利なSAStrutsのカスタムタグファンクションについて解説しました。前回までで、SAStrutsをプレゼンテーション層、サービス層、パーシステンス層と分けたときにプレゼンテーション層の流れはすべて追ったことになります。

 今回は、SAStrutsのサービスクラスと、そこで使われている「S2JDBC」についてお話ししたいと思います。この回でWeb画面からデータベース(以下、DB)までの業務用のWebアプリケーショに必要なすべての流れを完了します。これでSAStrutsを利用したWebアプリを作る方法の基本のすべて分かったことになると思います。

 なお今回の記事でも連載第1回の『1分でWebアプリを作れるEclipseプラグイン「Dolteng」』で作成した環境を使用します。まだ読んでいない方は、第1回記事から順番に読むことをお勧めします。

注意! 「Doltengの現在のバージョンについて」

連載開始の第1回からEclipseプラグインDoltengのバージョンが上がり、2009年3月現在のバージョンは0.36.0となっています。できることも少し増え、自動作成されるソースコードに少し変更があるかもしれませんが、Doltengは非常に便利なので最新バージョンもぜひ使ってみてください。

今回は、連載当初のバージョンの0.33.0のプロジェクトで作成されたもので解説しますが、0.36.0の新機能についても後述します。

超便利なJDBC、「S2JDBC」とは?

 S2JDBCはDBのアクセスとJavaオブジェクトの変換を行うO/Rマッピングのフレームワークです。「流れるようなインターフェイス」が採用されていて、SQLを知っている人ならば、Javaで書かれていても何をやっているかはっきり分かるようになっています。O/Rマッピングについて、詳細を知りたい読者は、以下の記事が参考になると思います。

 またS2JDBCは、DB接続時のわずらわしいトランザクション管理が不要なのも特徴です。それでは、S2JDBCの具体的な使い方を解説していきたいと思います。

S2JDBCのデータオブジェクトとテーブルのマッピング

 まずは、テーブルのデータがマッピングされるデータオブジェクトであるEntityクラスを定義します。Doltengで生成したDeptクラスは、このクラスがDeptテーブルと対応することを表すため、@Entityアノテーションが付加されています。デフォルトでは、「テーブル名=クラス名」となります。

データオブジェクトの変数とテーブルのカラムのマッピング

 次に、カラムに使用されるメンバ変数には@Columnアノテーションが付加されています。こちらも、デフォルトは「カラム名=変数名」となります。

データオブジェクトに保存できる型

 S2JDBCのEntityクラスを使う場合、DBに保存する型として利用可能なものは、以下になります。

  • プリミティブ型
    • boolean
    • char
    • byte
    • short
    • int
    • long
    • float
    • double
  •  
  • ラッパー型
    • Boolean
    • Character
    • Byte
    • Short
    • Integer
    • Long
    • Float
    • Double
  •  
  • 文字列型
    • java.lang.String(※ラージオブジェクトにすることができる
  •  
  • 数値型
    • java.math.BigDecimal
    • java.math.BigInteger
  •  
  • 列挙型
    • java.lang.Enumのサブクラス
  •  
  • 日付・時刻型
    • java.util.Date(※プロパティには時制の指定が必須)
    • java.util.Calendar(※プロパティには時制の指定が必須)
    • java.sql.Date
    • java.sql.Time
    • java.sql.Timestamp
  •  
  • バイト列型
    • byte[](※ラージオブジェクトにすることができる)
  •  
  • シリアライズ可能型
    • java.io.Serializable(※ラージオブジェクトにすることができる)

そのほかの設定

 主キーになる項目には、@Idアノテーションを付加します。また、値が自動生成される項目(シーケンスなどで)@GeneratedValueアノテーションを付加します。

 以上が、基本的なEntityのアノテーションの説明です。今回の開発手順で進めれば自動生成されてしまうため、ほとんど自分で書くことはありませんが、一通りの知識は持っておいた方がよいでしょう。

 そのほかのアノテーションやデフォルト以外の設定方法もありますが、それらの設定方法やより詳しい利用法はS2JDBCの公式ページとメーリングリストを参照してください。

 次ページでは、S2JDBCのSQLライクな「流れるようなインターフェイス」を紹介し、DB操作にtry/catch/finally文を必要としない、トランザクション管理について説明します。

 
1-2-3

 Index
最終回 流れるようにSQLっぽくO/RマッピングできるS2JDBC
Page1
注意! 「Doltengの現在のバージョンについて」
超便利なJDBC、「S2JDBC」とは?
  Page2
S2JDBCでDB操作をしてみよう
S2JDBCを利用した超簡単なトランザクション管理
  Page3
実はDoltengよりも良い?「S2JDBC-Gen」とは
Seasar 2.4で、あなたも超俊敏なWebアプリ開発を





Java Solution全記事一覧



TechTargetジャパン

Java Solution フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH