2

本から小さな grails アプリケーションを開発していますが、必要な手順の 1 つは、データベースに初期データを供給することです。を使用するGroovyConsoleと、スクリプトは実行されますが、データは保持されません。

DataSource.groovy環境設定は以下の通り

development {
        dataSource {
            dbCreate = "update" // one of 'create', 'create-drop', 'update', 'validate', ''
            url = "jdbc:h2:devDb;MVCC=TRUE;LOCK_TIMEOUT=10000;DB_CLOSE_ON_EXIT=FALSE"
        }
    }

コンソールでスクリプトを実行すると、resultが返されますNULL。アプリケーションにGGTSを使用していますが、GGTSからの初期データを保持する方法がわからないためgrails console、コマンドプロンプトからコマンドを実行しました。これは正しい方法ですか?GGTS から直接行う方法はありますか?

PS: この質問Seeed data for grails applicationを見ましたが、現在の場所と必要なものに対しては高度すぎるようです。

ありがとう

4

2 に答える 2

3

まったく異なるアプローチをお勧めします。initData()と呼ばれる 1 つのメソッドを使用して、たとえばBootstrapInitialDataServiceと呼ばれるサービスを作成します。そのクラスからインターフェースを抽出することをお勧めします (これをInitialDataServiceと呼びましょう)。これにより、開発環境と本番環境で異なるコンポーネント Bean を簡単に定義できます。この initData() メソッドでは、すべてのドメイン オブジェクトを簡単に作成できますが、それらがデータベースに既に存在するかどうかを最初に確認することを忘れないでください。これを行うときは、このサービスを Bootstrap.groovy に挿入し、ブートストラップの init クロージャーで initData() を実行します。

class Bootstrap {

def initialDataService

def init = {

    initialDataService.initData()
}

resources.groovy ファイルで、initialDataService Bean を明示的に定義できます。

beans = {
    //.... other beans definition goes here

    initialDataService(your.package.BootstrapInitialDataService)
}

init データのブートストラップ ロジックを変更する場合は、単に新しい Bean を定義し、resources.groovy の定義を置き換えるだけで済みます。残りは同じままです。環境スイッチを使用して、異なる環境に異なる Bean を注入することもできます。これは非常に強力な利点です。

于 2014-10-09T05:44:27.730 に答える