私はクライアント側からの各要求がサーバー側で複数のスレッドを生成するシステムを構築しています。各スレッドは、1つ以上のDAOを使用しています(DAOは、その時点で複数のスレッドが使用できます)。すべてのDAOはSpringのスレッドクラスに(@Autowired
)注入されます。各DAOにはSessionFactory
も注入されます。Spring +複数のスレッド間でのセッション管理の休止
これらの複数のDAO間でHibernateセッションを管理する適切な方法は何ですか?マルチスレッド環境(異なるスレッドのDAOはほとんど同じセッションを同時に使用しようとしているなど)のために問題に陥ることはありません。
私はhibernate.current_session_context_class=thread
をHibernate設定で指定し、DAOで毎回SessionFactory.getCurrentSession()
を使用するだけで十分ですか?必要に応じてスレッドごとにセッションを正しく検出して作成できますか?
作業が終了したらセッションを終了すると自動的に完了しますか? – MounirReg
Spring 3以降でHibernateを使用するときは、SpringがHibernateセッションを管理するために必要なこの独自の実装を持っているので、このプロパティの設定は避けてください。 http://stackoverflow.com/a/18842593/3826713 – UCJava