【问题标题】:How to use JDBC on working Hibernate/Spring web-app?如何在工作的 Hibernate/Spring web-app 上使用 JDBC?
【发布时间】:2011-09-13 01:21:25
【问题描述】:

我正在使用 Hibernate/Spring 网络应用程序(HibernateDaoSupportgetHibernateTemplate() 等)。对于几个任务,我需要使用 JDBC(jdbcTemplate ?)。在那种场景下怎么做?

【问题讨论】:

    标签: hibernate spring jdbc


    【解决方案1】:

    只需创建JdbcTemplate 并使用与HibernateDaoSupportHibernateTemplate 相同的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 访问代码访问同一个数据库/连接池,则必须注意一些副作用:

    • 休眠二级缓存不知道 JDBC 修改
    • JDBC 代码不知道 Hibernate 乐观锁定
    • 事务管理
    • ...

    另一种方法是访问 Hibernate 会话使用的 JDBC 连接(在HibernateDaoSupport:

    getSession().connection()
    

    【讨论】:

    • 很好,但是 class="org.springframework.jdbc.coreJdbcTemplate" 应该是 class="org.springframework.jdbc.core.JdbcTemplate"
    【解决方案2】:

    您可以使用 Session.doWork 使用 Hibernate 使用的 JDBC 连接执行代码。

    这当然要求您使用并有权访问 Hibernate 的 Session 对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-21
      • 2014-02-04
      • 2011-10-29
      • 1970-01-01
      • 2012-03-23
      • 1970-01-01
      • 2017-05-31
      • 1970-01-01
      相关资源
      最近更新 更多