2011-06-11 62 views

回答

4

只需創建JdbcTemplate並使用HibernateDaoSupport,HibernateTemplate正在使用的相同DataSource。 Hibernate只是一個在JDBC DataSource /連接上工作的高級庫。你可以手動使用它。試試:

@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的修改
  • JDBC代碼是不知道Hibernate的樂觀鎖定
  • 事務管理
  • ...

另一種方法是訪問HibernateDaoSupport使用Hibernate會話(JDBC連接:

getSession().connection() 
+0

謝謝,效果很棒:) – marioosh 2011-06-13 07:16:27

+0

太棒了,但class =「org.springframework.jdbc.coreJdbcTemplate」應該是class =「org.springframework.jdbc.core.JdbcTemplate」 – korosmatick 2015-11-24 14:35:38

3

您可以使用Session.doWork使用Hibernate使用JDBC連接來執行代碼。

這當然要求您使用並有權訪問Hibernate的Session對象。