当前位置: 首页 > 知识库问答 >
问题:

Hibernate DAO/SessionFactory使用

牧宁
2023-03-14

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

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

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

共有1个答案

戚建华
2023-03-14

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

Spring的一个常见做法是使用@repository@autowired将DAO实现注释到服务或其他需要使用它的类中。

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

 类似资料:
  • 我正在尝试为以下类编写单元测试: 还有一些其他方法,但这个设置代码是与我的问题相关的。在单元测试中,我想模拟(使用EasyMock)对象以及它将返回的和对象: 当我尝试用JUnit运行它时,我得到以下错误: 在上没有我可以看到的公共变量。我是EasyMock的新手,所以我想我的问题是:对于我应该告诉我的mock返回什么,以及如何告诉它这样做?我根本不知道为什么设置代码会被调用,所以这是另一个谜。更

  • 问题内容: 我正在尝试使用spring 3.2和hibernate 4 创建bean。为此,我使用了以下代码。但问题是 过时 和建议,而不是使用的javadoc。但是,我无法理解什么是 ServiceRegistry 以及如何使用。 问题答案: 接口与服务的概念有关(对于Hibernate 4是新的)。服务是为Hibernate提供各种功能的类,用户可以为它们插入替代的实现。有关详细信息,请参见此

  • =============编辑: 下面是我的新配置: 实体: 编辑3: --已删除(字符限制)-- 编辑4:

  • 问题内容: 也许有人可以解释使用哪个?什么时候,为什么? 问题答案: HibernateTemplate的Javadoc说: 注意:从Hibernate 3.0.1开始,事务性Hibernate访问代码也可以采用普通的Hibernate样式进行编码。因此,对于新启动的项目,请考虑采用基于SessionFactory.getCurrentSession()的标准Hibernate3样式编码数据访问对

  • 问题内容: 如何使用Java配置创建SessionFactory? 由于某些原因,此方法不起作用…它总是返回null。 问题答案: 这里值得一提的是Spring 3.1引入了LocalSessionFactoryBuilder,它专门设计用于@Bean方法中。 http://static.springsource.org/spring/docs/3.1.0.RC1/javadoc- api/org

  • 可以从持久性创建hibernate会话工厂对象。xml。通常,我们使用持久性创建EntityManagerFactory。xml,我想知道是否可以创建SessionFactory<我在谷歌上搜索了一下,但没有找到任何有用的资源。