Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate DAO/SessionFactory使用_Java_Spring_Hibernate - Fatal编程技术网

Java Hibernate DAO/SessionFactory使用

Java Hibernate DAO/SessionFactory使用,java,spring,hibernate,Java,Spring,Hibernate,在我的应用程序中,我有一个DAOBean,我通过Spring注入了一个Hibernate sessionFactory(配置了c3p0连接池)。我的sessionFactory bean的定义如下: <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> ... </bean> ... 在线程化环境中使用包装DAOBean的最佳实践和/

在我的应用程序中,我有一个DAOBean,我通过Spring注入了一个Hibernate sessionFactory(配置了c3p0连接池)。我的sessionFactory bean的定义如下:

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

...

在线程化环境中使用包装DAOBean的最佳实践和/或最佳性能是什么?我应该将它定义为一个单例bean,并让它在线程之间共享,同时依赖sessionFactory的线程安全性吗?还是应该为每个线程创建一个单独的DAO实例?这有关系吗?

如果DAO除了SessionFactory之外没有任何成员字段,请将每个字段用作传递给所有线程的单例

Spring的一种常见做法是使用
@Repository
@Autowired
将实例注释到需要使用它的服务或其他类中


SessionFactory#openSession()
SessionFactory#getCurrentSession()
分别返回一个新的会话实例和一个线程本地会话,因此线程之间不会共享任何内容。

如果DAO除了SessionFactory之外没有任何成员字段,请将每个字段用作传递给所有线程的单例

Spring的一种常见做法是使用
@Repository
@Autowired
将实例注释到需要使用它的服务或其他类中

SessionFactory#openSession()
SessionFactory#getCurrentSession()
分别返回一个新的会话实例和一个线程本地会话,因此线程之间不共享任何内容