1

タイトルが示すように、永続化のために Hibernate/JPA を使用して Spring MVC プロジェクトを構成しようとしています。

DispatcherServlet両方に同じコンテキストを使用したことを覚えていContextLoaderListenerます。最近まで、それらを分離するようにアドバイスされていました。しかし、 を分離する際に、両方が をロードしていて面倒であることがわかったのでSessionFactoryOpenSessionInViewFilter懸念を分離し、MVC の懸念のみを に残しましたDispatcherServlet

必要に応じてコレクションをロードするメカニズムがあることは別として、この親オブジェクトを呼び出すときに、悪名高いを回避するための他のヒントは何LazyInitializationExceptionですか?

4

1 に答える 1

0

作業単位」をリクエストごとに自動的に作成できない場合は、トランザクションを使用してサービスレイヤーで手動で作成できると思います。このようなもの:

public Object serviceMethod(params) {
   TransactionTemplate transactionTemplate; 
   transactionTemplate.execute(new TransactionCallbackWithoutResult() {
         public void doInTransactionWithoutResult(TransactionStatus status) {
         try {
        // call your DAO's to update/delete/... and set values to service
         } catch (DAOException e) {
        LOGGER.error(e);
        throw new ServiceException(e);
         }
    }
});
}
于 2012-09-07T10:17:01.547 に答える