SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

SQLも使えるオブジェクトデータベース「CACHE'」を知る

第5回 JalapeñoによるJavaアプリケーション開発 後編

SQLも使えるオブジェクトデータベース「CACHE'」を知る 5


  • このエントリーをはてなブックマークに追加

第4~5回では、Cache' 2007.1から正式サポートされるJalapen~o(ハラペーニョ)テクノロジによるJavaアプリケーション開発について解説します。第5回の今回は、Jalapen~o ObjectManagerによるステップと、POJOアノテーションについて解説します。

  • このエントリーをはてなブックマークに追加

はじめに

 連載の第4回、第5回では、Caché 2007から正式サポートされるJalapeñoテクノロジによるJavaアプリケーション開発について、前半・後半に分けて解説します。この後半では、Jalapeño ObjectManagerによるステップと、POJOアノテーションについて解説します。また、データベース変更後にシステム管理ポータルで確認する作業についても触れたいと思います。

対象読者

  • アプリケーション・システム開発をしている人
  • データベース関連の開発およびメンテナンスをしている人
  • JavaやC#でプログラミングしている人

POJOクラスによる開発 Part 2

 Part 1では、SchemaBuilderを使って、Contact.classをもとにデータベーススキーマを生成させました。このbasic.Contactの永続性を管理するためには、永続性マネージャクラスとしてDBService.classを作成し、Jalapeño ObjectManagerによって管理する必要があります。Part 2ではこの方法について解説します。

Jalapeño ObjectManagerを使う際のEclipseの設定

 前回でも書きましたが、本連載では、Javaの開発環境として「Eclipse 3.2.0」を、JREシステムライブラリは「jre 1.5.0」を使っています。Eclipseの詳細は省略しますが、本連載のクラスファイルを実行するために最低限必要な設定は次のとおりです。

  • 全体の設定として「インストール済みのJRE」をCacheDB.jarのバージョンに合わせる(本連載ではjre1.5.0.xx)
  • 全体の設定として「コンパイラー準拠レベル」を5.0とする
  • プロジェクトExamplesのプロパティ画面で、[Javaのビルド・パス]-[ライブラリー]の[外部JARの追加]をクリックして、CacheDB.jarを追加する
  • ビルド・パスの出力フォルダーを「build」とする

Jalapeño ObjectManagerを使うステップ

 前回、Contact.classを作成しましたが、その同じパッケージ内で、DBService.classを作成します。その手順は次のようになります。

  1. ObjectManagerインスタンスを作成し、java.sql.Connectionオブジェクトで初期化する
  2. ContactインスタンスをCachéに保存するために、ObjectManagerのsaveメソッドを使うsaveContactメソッドを作成する
  3. Caché内のすべてのContactインスタンスを開くために、ObjectManagerのopenByQueryメソッドを使うallContactsメソッドを作成する

 これらの手順はすべてDBService.classとして作成しておきます。DBService.classの完全なコードは次のとおりです。

DBService.java ソースコード
package basic;

import com.jalapeno.ApplicationContext;
import com.jalapeno.ObjectManager;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Iterator;

public class DBService
{
    ObjectManager objectManager;

/*
(1) DBServiceコンストラクタでObjectManagerインスタンスを作成
*/
public DBService () throws Exception { String host = "localhost"; String username="_SYSTEM"; // null for default String password="SYS"; // null for default String url="jdbc:Cache://" + host + ":1972/USER"; Class.forName ("com.intersys.jdbc.CacheDriver"); Connection connection = DriverManager.getConnection (url, username, password); objectManager = ApplicationContext.createObjectManager (connection); } /*
(2) ObjcetManager.saveメソッドを使ってCacheに保存
*/
protected void saveContact(Contact contact ) throws Exception { objectManager.save(contact, true); } /*
(3) このallContectsメソッドにより、
データベースからすべてのContactインスタンスを取得し、
POJOにイテレータを返す
*/
protected Iterator allContacts () throws Exception { return objectManager.openByQuery (Contact.class, null, null); } }

 こうした作成したbasic.DBServiceというJava永続性マネージャクラスによって、POJOクラスbasic.Contactの永続性が管理できます。それでは、basic.DBServiceクラスの動作確認のために、テスト用クラスを作成し検証してみましょう。次の操作を行うクラスを作成します。

  1. DBServiceインスタンスの作成
  2. 2つのContactインスタンスの作成
  3. DBServiceを使って、ContactインスタンスをCachéに保存
  4. DBServiceを使って、ContactインスタンスをCachéから取得

 このテストクラスのソースコード「Test.java」は次のようになります。

Test.java ソースコード
package basic;

import java.util.Iterator;s

public class Test {
    private static DBService service;
    public static void main (String[] args) throws Exception
    {
        service = new DBService();      ……(1)

        //Create and save two contacts  ……(2)
        Contact contact = new Contact();
        contact.name = "Smith,John";
        contact.contactType = "Business";
        service.saveContact(contact);
        contact = new Contact();
        contact.name="Smith,Jane";
        contact.contactType="Business";
        service.saveContact(contact);   ……(3)

        //retrieve and display contacts
        for (Iterator iter = service.allContacts(); iter.hasNext();)
        ……(4)
        {
            Contact con = (Contact)iter.next();
            System.out.printf(
                "Name: %s Type: %s\n", con.name, con.contactType);
        }
    }
}

 このTest.javaをビルドし実行すると、Cachéには2つのContactインスタンスが追加されます。上記のDBService.javaとTest.javaという2つのソースコードを、Eclipseを用いてビルドし、Test.classを実行した画面は次のようになります。

Test.classを実行したEclipseの画面
Test.classを実行したEclipseの画面

 この画面最下段にある「コンソール」に、2つのContactインスタンスが表示されました。それではCachéのシステム管理ポータルで、このデータを確認してみましょう。システム管理ポータルの[SQL]から[SQLスキーマを参照]を選び、[basic]スキーマをクリックして、クラス名「basic.Contact」とあるテーブルを開きます。

2つのデータが表示されたシステム管理ポータル画面
2つのデータが表示されたシステム管理ポータル画面

 確かに、ObjectManagerを使って、Cachéに2つのContactインスタンスが保存されました。このsaveメソッドを含めて、ObjectManagerが提供する主なメソッドは、次表の通りです。

ObjectManagerが提供する主なメソッド
メソッド名 機能
insert POJOに対応するデータベースにオブジェクトを挿入
save POJOに対応するデータベース内のオブジェクトを更新(オブジェクトがない場合は、新規作成)
update POJOに対応するデータベース内のオブジェクトを更新
removeFromDatabase POJOに対応するデータベース内のオブジェクトを削除
openByPrimaryKey 指定された主キーを使って、データベースオブジェクトを検索し、メモリ内でインスタンス化
openByQuery 指定されたSQL条件を満たすクラスのデータベースオブジェクトをメモリ内でインスタンス化

 ところで、ここまでの手順でCachéを使ったのは、SchemaBuilderウィザードを利用して、Contactクラスをもとにデータベーススキーマを生成した箇所だけです。それ以外の手順はすべてEclipse上で行っています。このようにJalapeñoは、Cachéを意識することなく、POJOクラスを用いたデータの永続性の管理が可能です。

次のページ
SchemaBuilderを使ったデータベーススキーマの変更

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
SQLも使えるオブジェクトデータベース「CACHE'」を知る連載記事一覧

もっと読む

この記事の著者

トップスタジオ(トップスタジオ)

1997年の創立以来、一貫してPC/IT関連書籍、雑誌等記事の制作業務を手掛けるプロフェッショナル集団。翻訳・編集・DTPのほか、技術監修や著作も多数。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/1516 2008/09/04 12:42

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング