1

MySQLを使用したgrailsでのバッチ処理について、このすばらしいブログ投稿にあるアドバイスを実装しようとしています。私が抱えている問題は、ループにsession.clear()への定期的な呼び出しが含まれていると、org.hibernate.LazyInitializationExceptionがスローされることです。ページのコメントセクションに引用があります:

あなたは潜在的にLIEを引き起こすことについての2番目のポイントは絶対に真実です。現在のスレッドでインポート以外のことをしている場合は、クリアを行った後、必ずオブジェクトをセッションに再アタッチする必要があります。

しかし、どうすればそれを行うことができますか?「クリアが完了した後、セッションにオブジェクトを再アタッチする方法を具体的に理解するのを誰かが助けてくれますか?

また、データベース挿入プロセスを並列化して、マルチコアプロセッサを利用できるようにすることにも興味があります。Grailsでそれを行う方法について誰かがアドバイスを提供できますか?

4

1 に答える 1

1

Grails には、これを支援するための方法がいくつかあります (隠れて休止状態を利用しています)。

オブジェクトが切り離されていることがわかっている場合は、attachメソッドを使用して再接続できます。

デタッチ中にオブジェクトに変更を加えた場合は、 mergeを使用できます。

何らかの理由で、オブジェクトがセッションにアタッチされているかどうかわからない場合は、リンク テキストメソッドを使用して、アタッチされているかどうかを確認できます。

Sessionに関する Hibernate のドキュメントを確認することも価値があるかもしれません。

于 2010-08-06T03:36:21.467 に答える