libro
www.tuyano.com
Google App Engine for Java(GAE/J)プログラミング入門

複数モデルを連携処理する (1/6)

作成: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をそのまま保管してしまおうというわけです。これで済んでしまえば、何も難しいことを考える必要はありませんね?

※プログラムリストが表示されない場合

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)プログラミング入門」に戻る