1

我们有一个 Spring/Hibernate 应用程序,出于性能和开发时间的原因,希望添加少量 JDBC。我可以使这个 dao 子类 HibernateDaoSupport 并使用会话的连接来执行我的 JDBC,但我宁愿使用 JdbcTemplate。然而,JdbcTemplate 是使用 java.sql.Datasource 初始化的。如何使用我现有的 Hibernate SessionFactory 来初始化它?

4

3 回答 3

4

您不需要为 SessionFactory 实现提供 DataSource 吗?为什么不将它连接到 JDBC 模板?

您使用的是哪个 SessionFactory 实现?如果您使用的是 Spring 实现,请参阅AbstractSessionFactoryBean.html#getDataSource()

于 2009-08-26T18:34:36.797 回答
2

您始终可以使用休眠会话的doWork方法——这为您提供了 java.sql.Connection。您可以使用此连接构造一个SingleConnectionDataSource(注意:第二个参数应始终为真,因为您不想关闭底层连接)并将此数据源传递给您的 JDBCTemplate...

于 2010-03-15T17:34:45.130 回答
0

“从我们的休眠配置中提取数据源似乎需要做很多工作”

我不明白为什么需要这么多工作。这只是创建、剪切和复制几个标签和属性的问题。

例如:

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
      <property name="dataSource">
          <ref bean="dataSource"/>    
      </property>
...
</bean>

“您使用的是哪个 SessionFactory 实现?如果您使用的是 Spring 实现,请参阅 AbstractSessionFactoryBean.html#getDataSource()”

显然,getDataSource() 仅适用于 Spring 2.5。这是参考:点击这里

Spring 2.0 没有 getDataSource()。这是参考:点击这里

我们的会话工厂是使用使用休眠属性初始化的 AnnotationSessionFactoryBean 创建的…… hibernateSessionFactory 是一个 SessionFactory。我将如何获得对 SessionFactoryBean 的引用?

我想知道为什么您使用 SessionFactory 而不是作为 AnnotationSessionFactoryBean 的子类的 LocalSessionFactoryBean?

bean id="hibernateSessionFactory"行不是已经引用了 SessionFactoryBean 吗?

于 2009-08-31T16:36:13.663 回答