図解、ActiveObjectsの一番大事なところ!

前に「ActiveObjectsでたったの2時間で作れる3次元グラフ」と言うのを書きました。


ActiveObjectsjavaインスタンスを丸ごとDBにマッピングしてくれるです。
インスタンスの丸ごとマッピングなので、主キーが1個とか2個とか関係ないです。
そう・・・主キーなんて大事じゃないんです。大事なことなので2度言いました。
むしろ、AOを使うならDBのことなんか忘れちゃえばいいんです。
って・・・ぜんぜん説明できていない・・・。
しかし、このときはActiveObjectsの大事な点を伝えることができませんでした。
そこで、今回は「ActiveObjectsでたったの2時間で作れる3次元グラフ」にあたって僕が意識したActiveObjectsの「一番大事なところ」を図解します。

要点 - エンティティとテーブル行は必ず一対一

ActiveObjectsで一番大事のなのは、ActiveObjectsのエンティティとDBのテーブル行が一対一である点です。

エンティティ作成から保存の流れ

要点をふまえて、ActiveObjectsでのエンティティの作成からテーブル行へのデータの保存までの流れを説明します。以下の3つの流れになります。

  • (1) create()メソッド - エンティティとテーブル行の組み合わせを作る。
  • (2) set〜()メソッド - エンティティにデータを設定する。
  • (3) save()メソッド - エンティティのデータをテーブル行に保存する。
事前準備

AOを使うには、DBへの接続情報を持つEntityManagerのインスタンスが必要です。まずはEntityManagerのインスタンスを用意します。コンストラクタの引数にDBの接続情報(接続用URI、ユーザ名、パスワード)を渡せばOKです。

// localhostにあるmysqlのデータベースaotestに接続する。ユーザはroot、パスワードはなし。
EntityManager manager = new EntityManager( "jdbc:mysql://localhost/aotest", "root", null );
(1) create()メソッド - エンティティとテーブル行の組み合わせを作る。

EntityManangerインスタンスのcreate()メソッドを呼び出すと、新しいエンティティとテーブル行が作られます。このエンティティとテーブル行は一対一に対応します。このときはまだ、エンティティの持つ値もテーブル行の値も両方ともnullです。
なお、create()メソッドは戻り値としてエンティティのインスタンスを返します。

// ThreeDDataエンティティのインスタンスとthreeDDataテーブルの行を作成する。
ThreeDData data = manager.create( ThreeDData.class );

(2) set〜()メソッド - エンティティにデータを設定する。

エンティティのset〜()メソッドを呼び出すと、エンティティに値を設定できます。set〜()メソッドを呼び出したときは、エンティティに対応するテーブル行の値はまだ変更されません。

data.setX( 100 );
data.setY( 400 );
data.setZ( 300 );

(3) save()メソッド - エンティティのデータをテーブル行に保存する。

エンティティのsave()メソッドを呼び出すと、エンティティに設定された値が対応するテーブル行に保存されます。したがって、save()メソッドを呼び出すとエンティティとテーブル行の内容は同じになります。

data.save();

まとめ

ActiveObjectsとは、エンティティに設定したデータを対応するテーブル行に簡単に保存できる仕組みです。
create()インスタンスでエンティティを作ると、もれなく対応するDBのテーブル行が作られます。エンティティはJavaBeansのようにset〜()メソッドを使うことで値の設定ができます(もちろん値を取得するためにget〜()メソッドも使えます)。さらに、save()メソッドを呼び出せばエンティティに設定した値は対応するDBのテーブル行に保存できます。
このことを覚えておけば、ActiveObjectsの学習の次のステップに進めると思います。←いまここ