複数モデルを連携処理する (1/6)
作成:2010-05-07 16:42
更新:2010-05-07 16:42
更新:2010-05-07 16:42
■LinkDataに関連する「MsgData」クラスの作成
単純に、1つのモデルを保管し検索するのは、ほぼできるようになりました。では、いくつかのモデルクラスを用意し、それらを関連付けて扱うにはどうすればよいのでしょうか。
SQLデータベースの場合、JOINを使って関連するデータを検索することができました。が、データストアではそうはいきません。JDOにはJOINに相当する機能が用意されていないのです。では、できないのか? いいえ、実を言えば、もっと簡単にできるのです。わざわざJOINなんて使う必要がないから、その機能がない?のかも知れません。
データストアは、Javaのオブジェクトをそのまま保管するものです。クラスの中に、さまざまな値を保管するためのフィールドを用意しておき、そこに値を入れてオブジェクトごと保存しているのでした。ならば、関連するオブジェクトも、フィールドに用意して保存してしまえばいいではありませんか?
実際にやってみましょう。ここでは、新たに「MsgData」というクラスを作ってみましょう。これは、LinkDataのリンクにコメントを付けるためのものです。コメントを付けるLinkDataと、コメントのテキストを保管するようにしてみましょう。下のリスト欄にソースコードを掲載しておきます。
ここでは、ID、LinkData、コメント、日時といった項目を用意してあります。ここにコメントと一緒に、関連するLinkDataをそのまま保管してしまおうというわけです。これで済んでしまえば、何も難しいことを考える必要はありませんね?
SQLデータベースの場合、JOINを使って関連するデータを検索することができました。が、データストアではそうはいきません。JDOにはJOINに相当する機能が用意されていないのです。では、できないのか? いいえ、実を言えば、もっと簡単にできるのです。わざわざJOINなんて使う必要がないから、その機能がない?のかも知れません。
データストアは、Javaのオブジェクトをそのまま保管するものです。クラスの中に、さまざまな値を保管するためのフィールドを用意しておき、そこに値を入れてオブジェクトごと保存しているのでした。ならば、関連するオブジェクトも、フィールドに用意して保存してしまえばいいではありませんか?
実際にやってみましょう。ここでは、新たに「MsgData」というクラスを作ってみましょう。これは、LinkDataのリンクにコメントを付けるためのものです。コメントを付けるLinkDataと、コメントのテキストを保管するようにしてみましょう。下のリスト欄にソースコードを掲載しておきます。
ここでは、ID、LinkData、コメント、日時といった項目を用意してあります。ここにコメントと一緒に、関連するLinkDataをそのまま保管してしまおうというわけです。これで済んでしまえば、何も難しいことを考える必要はありませんね?
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
package jp.tuyano; import java.util.Date; import javax.jdo.annotations.*; import com.google.appengine.api.datastore.Key; @PersistenceCapable(identityType = IdentityType.APPLICATION) public class MsgData { @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) private Long id; @Persistent private LinkData linkdata; @Persistent private String comment; @Persistent private Date datetime; public MsgData(LinkData linkdata, String comment, Date datetime) { super(); this.linkdata = linkdata; this.comment = comment; this.datetime = datetime; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public LinkData getLinkData() { return linkdata; } public void setLinkid(LinkData linkdata) { this.linkdata = linkdata; } public String getComment() { return comment; } public void setComment(String comment) { this.comment = comment; } public Date getDatetime() { return datetime; } public void setDatetime(Date datetime) { this.datetime = datetime; } }
※関連コンテンツ
「Google App Engine for Java(GAE/J)プログラミング入門」に戻る