【问题标题】:single Transaction across Hibernate session and plain jdbc跨 Hibernate 会话和普通 jdbc 的单个事务
【发布时间】:2012-11-12 20:42:08
【问题描述】:

是否可以为 Hibernate Session 和普通的 JDBC 查询使用单个事务边界。 ? 两者的数据库和数据源配置相似。

【问题讨论】:

  • @RomanC 这很常见。

标签: java spring hibernate jdbc transactions


【解决方案1】:

是的。使用HibernateTransactionManager。以下摘自其javadoc

此实现适用于仅使用 Hibernate 用于事务数据访问,但它也支持直接 事务中的数据源访问(即纯 JDBC 代码工作 具有相同的数据源)。这允许混合访问的服务 Hibernate(包括事务缓存)和使用的服务 纯 JDBC(不知道 Hibernate)!应用代码需求 坚持与使用相同的简单连接查找模式 DataSourceTransactionManager(即 DataSourceUtils.getConnection 或 通过 TransactionAwareDataSourceProxy)。

请注意,为了能够注册一个 DataSource 的 Connection for plain JDBC 代码,此实例需要知道 DataSource(请参阅 集数据源)。给定的 DataSource 显然应该与那个匹配 由给定的 SessionFactory 使用。为此,请将两者配置为 相同的 JNDI 数据源,或者最好使用创建 SessionFactory LocalSessionFactoryBean 和一个本地数据源(它将是 由该事务管理器自动检测到)。

【讨论】:

    猜你喜欢
    • 2016-12-17
    • 2011-05-08
    • 2014-09-06
    • 1970-01-01
    • 1970-01-01
    • 2013-07-29
    • 2011-01-02
    • 1970-01-01
    • 2011-07-12
    相关资源
    最近更新 更多