我们有一个Spring / Hibernate应用程序,并且由于涉及性能和开发时间的原因而想添加少量JDBC . 我可以使这个dao子类HibernateDaoSupport并使用会话的连接来执行我的JDBC,但我宁愿使用JdbcTemplate . 但是,JdbcTemplate是使用java.sql.Datasource初始化的 . 如何使用现有的Hibernate SessionFactory初始化它?
您是否需要向SessionFactory实现提供DataSource?你为什么不把它连接到JDBC模板?
您使用的是哪个SessionFactory实现?如果您正在使用Spring实现,请参阅AbstractSessionFactoryBean.html#getDataSource()
您始终可以使用hibernate会话的doWork方法 - 这将为您提供java.sql.Connection . 您可以使用此连接构造构造SingleConnectionDataSource(注意:第二个参数应该始终为true,因为您不想关闭底层连接)并将此数据源传递给JDBCTemplate ...
“从我们的hibernate配置中提取数据源似乎为我需要的东西做了很多工作”
我不明白为什么需要做那么多工作 . 这只是创建,剪切和复制几个标签和属性的问题 .
例如:
<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 . 这是参考:Click here
Spring 2.0没有't have the getDataSource(). Here'的参考:Click here
我们的会话工厂是使用用hibernate属性初始化的AnnotationSessionFactoryBean创建的... hibernateSessionFactory是一个SessionFactory . 我如何获得对SessionFactoryBean的引用?
我想知道为什么你使用SessionFactory而不是LocalSessionFactoryBean,它是AnnotationSessionFactoryBean的子类?
是不是 bean id="hibernateSessionFactory" 行已经引用了SessionFactoryBean?
3 回答
您是否需要向SessionFactory实现提供DataSource?你为什么不把它连接到JDBC模板?
您使用的是哪个SessionFactory实现?如果您正在使用Spring实现,请参阅AbstractSessionFactoryBean.html#getDataSource()
您始终可以使用hibernate会话的doWork方法 - 这将为您提供java.sql.Connection . 您可以使用此连接构造构造SingleConnectionDataSource(注意:第二个参数应该始终为true,因为您不想关闭底层连接)并将此数据源传递给JDBCTemplate ...
我不明白为什么需要做那么多工作 . 这只是创建,剪切和复制几个标签和属性的问题 .
例如:
显然,getDataSource()仅适用于Spring 2.5 . 这是参考:Click here
Spring 2.0没有't have the getDataSource(). Here'的参考:Click here
我想知道为什么你使用SessionFactory而不是LocalSessionFactoryBean,它是AnnotationSessionFactoryBean的子类?
是不是 bean id="hibernateSessionFactory" 行已经引用了SessionFactoryBean?