ブログ Blog
に対応するデータアクセスインターフェース BlogDao
は、Dao
、
Registerable
、
SimpleFindable
、
Updatable
、
SimpleDeletable
といった基本インターフェースを実装し、次のように定義しました。
public interface BlogDao extends Registerable<Blog>, SimpleFindable<Blog>,
Updatable<Blog>, SimpleDeletable, Dao {
/**
* コードを指定してブログを取得します。
*
* @param code コード
* @return ブログ、見つからなければ <code>null</code>
*/
Blog findByCode(String code);
/**
* 指定した所有者のブログリストを取得します。
*
* @param ownerId 所有者のユーザ ID
* @return ブログリスト
*/
List<Blog> findByOwnerId(int ownerId);
}
ブログ記事
BlogEntry
に対応するデータアクセスインターフェースは設けませんでした。ブログ記事の実態は
Message
型のプロパティ「記事」であり、Message の機能を利用すれば十分にデータアクセス実装を実現で
きるからです。ブログとブログ記事、ブログ記事とコメントの関連を永続化する必要はありますので、それらに対応するメ
ソッドを
BlogDao
に
加えることにしました。
BlogDao
の
完全なコードは
BlogDao のソースコード
を参照ください。
public interface BlogDao ... {
/**
* 指定したブログに指定した記事を登録します。
*
* @param blogId ブログ ID
* @param entryId ブログ記事 ID (メッセージ ID)
*/
void registerBlogEntry(int blogId, int entryId);
/**
* 指定した記事にコメントを登録します。
*
* @param entryId ブログ記事 ID (メッセージ ID)
* @param commentId コメント ID
*/
void registerComment(int entryId, int commentId);
// findByCode
// findByOwnerId
/**
* @require ブログが記事を一つも持っていない
* @ensure ブログに関連するオブジェクトも削除される
*/
@Override
void delete(int blogId);
/**
* ブログが持つブログ記事の数を取得します。
*
* @param blogId ブログ ID
* @return ブログ記事数
*/
int countBlogEntry(int blogId);
/**
* 指定した範囲のブログ記事を取得します。記事番号は0から始まる整数で、ID の降順になります。
*
* @param blogId ブログ ID
* @param no 開始点となる記事番号
* @param num 件数
* @return ブログ記事リスト
*/
List<BlogEntry> findBlogEntries(int blogId, int no, int num);
/**
* 指定したブログ記事のコメントを取得します。
*
* @param entryId ブログ記事 ID (メッセージ ID)
* @return コメントリスト
*/
List<Comment> findComments(int entryId);
/**
* 指定したブログ記事を削除します。ブログ記事に付属するコメントも削除されます。
*
* @param entryId ブログ記事 ID
*/
void deleteBlogEntry(int entryId);
}