Grails 3とGORMの紹介

1概要

これはGrails 3とGORMの簡単な紹介です。

私たちはもちろんGroovyを使用します - そして暗黙のうちに - このフレームワークはORMにHibernate、依存性注入にSpring Framework、レイアウトとテーマにSiteMashなどを利用します

2データソース設定

明示的なデータソース設定を指定しなくても開始できます。デフォルトでは、Grailsは開発およびテスト環境にHSQLDBデータベースを使用します。

しかし、これらのデフォルトを変更したい場合は、 application.yml で選択したデータソースを定義できます。

environments:
    development:
        dataSource:
             driverClassName : "com.mysql.jdbc.Driver"
             url : "jdbc:mysql://localhost:8080/test"
             dialect : org.hibernate.dialect.MySQL5InnoDBDialect

同様に、必要ならば 開発 の隣に、ここで複数の環境を作ることができます。

3ドメイン

Grailsは、データベース設定の dbCreate プロパティに基づいて、ドメインクラスのデータベース構造を作成することができます。

ここでこれらのドメインクラスの1つを定義しましょう:

Class User {
    String userName
    String password
    String email
    String age
    static constraints = {
        userName blank: false, unique: true
        password size: 5..10, blank: false
        email email: true, blank: true
    }
}

検証制約をモデル内で正しく指定していることに注意してください。

これらの制約は、エンティティが永続化されているときにGrailsによって自動的にチェックされ、これらの制約のいずれかが破られるとフレームワークは適切な検証例外を投げます。

モデルの mapping プロパティでGORMマッピングを指定することもできます。

static mapping = { sort "userName" }

User.list() を呼び出すと、 ユーザー名 ** でソートされた結果が返されます。

もちろん、リストAPIにソートを渡すことで同じ結果を得ることができます。

User.list(sort: "userName")

4 CRUD操作

API操作を見ると、 scaffolding は最初は非常に興味深い役割を果たしています。次のようなドメインクラス用の基本的なCRUD APIを生成できます。

  • 必要な見解

  • 標準のCRUD操作に対するコントローラの動作

  • 2種類:ダイナミックとスタティック

動的足場でどのように機能するかを説明します。

class UserController {
    static scaffold = true
}

この一行を書くだけで、フレームワークは実行時に7つのメソッドを生成します:show、edit、delete、create、save、およびupdate。これらは、その特定のドメインエンティティのAPIとして公開されます。

静的足場の例:

  • 足場を使用してビューを作成するには、次を使用します。“ grails generate-views User

  • 足場を使用してコントローラとビューを作成するには、次のコマンドを使用します。

生成コントローラUser “ ** すべてを1つのコマンドで作成するには、次のように入力します。“ grails generate-all

ユーザー__"

これらのコマンドは、その特定のドメインオブジェクトに必要な配管を自動生成します。

それでは、 User ドメインオブジェクトなど、これらの操作の使用方法について簡単に見てみましょう。

新しい「ユーザー」レコードを作成するには

def user = new User(username: "test", password: "test123", email: "[email protected]", age: 14)
user.save()

単一のレコードを 取得する :+ ``

def user = User.get(1)

この get APIは編集可能モードでドメインオブジェクトを取得します。読み取り専用モードでは、 read APIを使用できます。

def user = User.read(1)
  • 既存のレコードを更新するには: ``

def user = User.get(1)
user.userName = "testUpdate"
user.age = 20
user.save()

そして既存のレコードに対する簡単な削除操作: ``

def user = User.get(1)
user.delete()

5 GORMクエリ

5.1. find

find APIから始めましょう。

def user = User.find("from User as u where u.username = 'test' ")

別の構文を使ってパラメータを渡すこともできます。

def user = User.find("from User as u where u.username?",['test'])

名前付きパラメータを使用することもできます。

def user = User.find("from User as u where u.username=?",[username: 'test'])

5.2. findBy

Grailsは、ドメインプロパティを使用して実行時にクエリを実行し、最初に一致したレコードを返す動的ファインダ機能を提供します。

def user = User.findByUsername("test")
user = User.findByUsernameAndAge("test", 20)
user = User.findByUsernameLike("tes")
user = User.findByUsernameAndAgeNotEquals("test", "100")

より多くの表現https://grails.github.io/grails-doc/3.0.x/guide/GORM.html#finders[ここ]があります。

5.3. 基準

柔軟な基準を使用してデータを取得することもできます。

def user = User.find { username == "test"}
def user = User.createCriteria()
def results = user.list {
    like ("userName", "te%")
    and
    {
        between("age", 10, 20)
    }
    order("userName", "desc")
}

ちょっと注意してください - 条件クエリを使用するときは、“()”の代わりに“ \ {}”を使用してください。

5.4. クエリの実行/更新

GORMはHQLクエリ構文もサポートしています - 読み込み操作用:

def user = User.executeQuery(
  "select u.userName from User u where u.userName = ?",['test'])

書き込み操作だけでなく、

def user = User.executeUpdate("delete User u where u.username =?",['test'])

6. 結論

これはGrailsとGORMの非常に素早い紹介でした - フレームワークを始めるためのガイドとして使用されるべきです。