2012-03-02 7 views
2

私は大規模なgrailsドメインオブジェクト構造を保存しようとしていますが、ドメインクラスの数は一握りですが、オブジェクトの数は100前後です。オブジェクトは古典的なgrails hasManyを使用してリンクされています。大きなドメインオブジェクトツリーを保存するためのヒント

基本的な考え方は、データベースを最初に消去してから、カスタムのGroovy Builderを使用してDSLを設定することです。ビルダは完全なオブジェクトグラフ/ツリーを返し、保存します。

私は、ルートノードだけを保存し、すべてのノードを節約するようなツリー全体をトラバースするなど、さまざまな方法で保存しようとしました。しかし、フラッシュされたセッションについて不平を言うさまざまな場所でHibernateが退屈になります。

誰かが似たようなことをして、いくつかの指針を与えることができます/アドバイスを進める方法はありますか?

save()操作をビルドプロセスの一部として統合する方がよいでしょうか? nodeCompleted(親、ノード)?

超過している未処理のSQL操作の最大数がHibernateになっていますか?

答えて

0

本当に完全オブジェクトツリー(belongsToキーワードを使用)の場合、ルートノードの保存は他のすべてのオブジェクトにカスケードする必要があります。ただし、手動で保存する各アイテムも同様に動作している必要があります。

私は多数のオブジェクトを処理していた、完全に別の理由で、私はそれが役に立つので、同じよう取扱説明書のセッションを行うことが見つかりました:

MyDomainClass.withSession { context -> 
    //my stuff here 
    //save 
} 

また、エラーメッセージそのものを見ることが有用であり、あなたかもしれませんドメインクラス構造。

0

rootNode addToChildNodesを作成し、rootNode.save(flush:true)を使用してオブジェクトのツリーを保存してみます。

関連する問題