TopHatenarとHatenarMapsのDB!

2008年7月4日(金)
浜本 階生

S2JDBCによるデータベースアクセス

 S2JDBCは、Java標準のデータベースアクセスAPIであるJPA(Java Persistence API)の仕様を改良する形で開発された、O/Rマッピングフレームワークです。TopHatenarとHatenarMapsでは、S2JDBCを用いることで、最小限のコード記述によるデータベースアクセスを実現しています。

 ここでは、S2JDBCの使用例として、実際のアプリケーションコードの中から、エンティティの定義部分とクエリの発行部分の一部を取り上げます。前ページのE-R図と対比させながらご覧ください。

 図3のリスト1は、TopHatenarのhatenarテーブルに対応するエンティティ定義です。S2JDBCによって、クラス中に宣言されたプロパティと、テーブル中の同名のカラムが、相互にマッピングされるようになっています。また、テーブル名や主キーなどのメタ情報は、アノテーションによって指定しています。

 Javaでは、プロパティのフィールドをprivate修飾子で保護し、getterとsetterを設けるコーディングスタイルが一般的ですが、このエンティティ定義では意図的にフィールドをpublic宣言し、getterとsetterを省略することで、コードの簡略化を図っています。

 図3のリスト2は、HatenarMapsで、長方形の座標範囲に含まれる地点の一覧を取得するメソッドです。コード中に登場するJdbcManagerは、S2JDBCに用意されているインタフェースで、データベースへの汎用アクセスメソッドを提供しています。

 JdbcManagerは、JPAにおけるEntityManagerに相当するものですが、Java 5以降の新言語機能であるGenericsや可変長引数を積極的に活用した設計となっており、EntityManagerに比べて使い勝手が大幅に向上しています。

 図3のリスト2の例からは、SQLの句に相当するfrom()やwhere()といったメソッドの連鎖によってクエリを発行する様子や、その結果をエンティティのリストとして取得する様子が分かります。

 以上のように、Javaによるデータベースアクセスを強力に支援してくれるS2JDBCは、TopHatenarやHatenarMapsの開発をスピーディーに進める上で、大きな原動力の1つとなっています。

TopHatenarのソースコード公開中

 今回は、TopHatenarとHatenarMapsのシステム構成を紹介し、そのデータベース構造について説明しました。また、S2JDBCを用いたデータベースアクセスの概要についても、コード例を示しながら解説を行いました。両アプリケーションとも、非常にシンプルなデータベース構造の上で稼働していることがお分かりいただけたかと思います。

 なお、TopHatenarのソースコードは、筆者のSubversionリポジトリ(http://kaiseh.com/svn)で公開していますので、興味を持たれた方は実際にチェックアウトしてご覧いただければ幸いです。

株式会社オープンナレッジ
1981年生まれ。栃木県出身。東京工業大学情報工学科を卒業後、2005年4月より株式会社オープンナレッジに勤務。システムの設計、開発から運用までを幅広く担当している。現在、Seasar Sandboxプロジェクトの下で、JavaのGUI開発向けフレームワーク「S2Swing」を開発中。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています