連載
» 2009年03月18日 10時00分 公開

Java初心者が超俊敏にWebアプリを作る方法(最終回):流れるようにSQLっぽくO/RマッピングできるS2JDBC (1/3)

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

[新田智啓,株式会社パワーエッジ]

 超俊敏に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 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。