Grails 0.5のsampleアプリrecipes編

さて、こちらもbookmarksサンプル同様「grails upgrade」して「grails run-app」。
こちらは普通に動作しました。

recipesサンプルですが、Grails 0.42とは違って、grails-app/domainがありません(ドメインクラスがありません)。で、どこにあるかというと、src/java/com/recipesディレクトリに、普通のJavaクラスとしてあります(POJOということ)。アノテーションを使って、ドメインクラス(エンティティ?)であることを指定しているようです。


package com.recipes;

import javax.persistence.Entity;

@Entity
public class Recipe {

クラス自体は、setter, getterを持つクラスです。違うところは、アノテーションでいくつか設定をしているところでしょうか。

idはこんな感じで、IDであること、値を自動生成することを明示的に指定しています。


@Id
@GeneratedValue
public Long getId() {
return id;
}

N:1関連はこんな感じで。


@ManyToOne
public Recipe getRecipe() {
return this.recipe;
}

制約自体は、別のファイルに記述するようです。名前は、[クラス名] + "Constraints.groovy"みたいです。Recipeクラス場合は、RecipeConstraints.groovyとなり、従来の制約のみ記述を記述します。


constraints = {
title(blank:false)
description(blank:false)
date(nullable:false)
}

ただ、これだけではドメインクラスとして扱ってもらうには不十分なようで、

をする必要があります。前者は、grails-app/conf/*DataSource.groovyに、


class DevelopmentDataSource {
def configClass = GrailsAnnotationConfiguration.class
と記述します。後者は、hibernate/hibernate.cfg.xml








に、という感じでパッケージ名とクラス名を設定します。