48. • GORM APIは、Groovy ASTによって、GORM
エンティティのバイトコードとして注入されま
す。これによりGORMのメソッドは、Javaコー
ドから、呼び出したり見たりできます。
Book book = new Book();
book.setTitle("The Stand")
book.save();
System.out.println(Book.count());
System.out.println(Book.list());
48
49. • GORMが抽象クラス継承をサポートしました。
関連リンクやクエリ等を抽象クラスに定義する
ことができます。
abstract Media {
String title
…
}
class Book extends Media {
}
class Album extends Media {
}
class Account {
static hasMany = [purchasedMedia:Media]
}
..
def allMedia = Media.list()
49
50. • ドメインクラスに、findWhereやfindByメソッドに似
た、nullを返さない、findOrCreateWhere,
findOrSaveWhere, findOrCreateBy,
findOrSaveByのクエリーをサポート。
• 実行結果にインスタンスが見つからない場合は、指定
された値で、新規にインスタンスを作成して返しま
す。findOrSaveWhereとfindOrSaveByの場合はイン
スタンスを保存してからインスタンスを返します。
def book = Book.findOrCreateWhere(author: 'Douglas Adams',
title: "The Hitchiker's Guide To The Galaxy")
def book = Book.findOrSaveWhere(author: 'Daniel Suarez',
title: 'Daemon')
def book = Book.findOrCreateByAuthorAndTitle(
'Daniel Suarez', 'Daemon')
d e f b o o k = B o o k . f i n d O r S a v e B y A u t h o r A n d T i t l e (' D a n i e l S u a r e z ' , ' D a e m o n ' )
50