0

私のアプリケーションには、Springを介してHibernate sessionFactory(c3p0接続プールが構成されている)で注入するDAOBeanがあります。私のsessionFactoryBeanは次のように定義されています。

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
...
</bean>

スレッド環境でラッピングDAOBeanを使用するためのベストプラクティスおよび/またはベストパフォーマンスは何ですか?これをシングルトンBeanとして定義し、sessionFactoryのスレッドの安全性に依存しながら、スレッド間で共有できるようにする必要がありますか?または、スレッドごとに個別のDAOインスタンスを作成する必要がありますか?それも重要ですか?

4

1 に答える 1

3

DAOにSessionFactory以外のメンバーフィールドがない場合は、すべてのスレッドに渡されるシングルトンとしてそれぞれを使用します。

Springの一般的な方法は、DAO実装に注釈を付け@Repository@Autowiredインスタンスをサービスまたはそれを使用する必要のある他のクラスに注釈を付けることです。

SessionFactory#openSession()とはSessionFactory#getCurrentSession()それぞれ新しいSessionインスタンスとスレッドローカルSessionを返すため、スレッド間で何も共有されません。

于 2013-02-28T19:19:01.240 に答える