【发布时间】:2011-09-13 01:21:25
【问题描述】:
我正在使用 Hibernate/Spring 网络应用程序(HibernateDaoSupport、getHibernateTemplate() 等)。对于几个任务,我需要使用 JDBC(jdbcTemplate ?)。在那种场景下怎么做?
【问题讨论】:
我正在使用 Hibernate/Spring 网络应用程序(HibernateDaoSupport、getHibernateTemplate() 等)。对于几个任务,我需要使用 JDBC(jdbcTemplate ?)。在那种场景下怎么做?
【问题讨论】:
只需创建JdbcTemplate 并使用与HibernateDaoSupport、HibernateTemplate 相同的DataSource。 Hibernate 只是一个基于 JDBC DataSource/connection 的精美库。您可以手动使用它。试试:
@Autowired
private DataSource ds;
如果你幸运的话,这应该可以。更好的办法是创建JdbcTemplate 作为 Spring bean 并注入适当的数据源:
<bean id="jdbcTemplate" class="org.springframework.jdbc.coreJdbcTemplate">
<constructor-arg ref="dataSource"/>
</bean>
考虑使用JdbcOperations接口,同时查看SimpleJdbcOperations。
@Autowired
private JdbcOperations jdbc;
如果您开始通过 Hibernate 和使用直接 JDBC 访问代码访问同一个数据库/连接池,则必须注意一些副作用:
另一种方法是访问 Hibernate 会话使用的 JDBC 连接(在HibernateDaoSupport:
getSession().connection()
【讨论】:
您可以使用 Session.doWork 使用 Hibernate 使用的 JDBC 连接执行代码。
这当然要求您使用并有权访问 Hibernate 的 Session 对象。
【讨论】: