複数モデルを連携処理する (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)プログラミング入門」に戻る