问题标签 [spring-transactions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2921 浏览

java - 在 JUnit 中测试 REQUIRES_NEW

运行我的测试时,它挂在对方法()的调用。难道我做错了什么?帮助!

忘记上面的代码。我现在已经在http://www44.zippyshare.com/v/46865082/file.html上传了一个 Eclipse 项目(不包括 spring 等依赖项) 。非常感谢所有有关如何通过测试的输入!如果我有两个 sqlite 数据库和两个数据源,则测试通过...

0 投票
1 回答
3692 浏览

hibernate - 谁有 Spring+Hibernate+2LC Infinispan+JPA 的工作示例?

我整个早上都在努力用 Infinispan 替换 EHCache。我尝试了许多不同版本的配置。但是在 Hibernate 和 Spring 之间似乎总是缺少关于事务管理的链接。让我自己感到羞耻的是,我不得不承认我似乎无法找到使这项工作协同工作的方法。

我正在使用由 JPA 和 Hibernate (4.0.1) 支持的 Spring (3.1) 的经典解决方案。使用 EHCache 作为二级和查询缓存。全部部署在独立的 Tomcat 7 上。

这里有人愿意为此分享一个有效的 Spring 配置吗?

非常感谢 !

我包括了 Spring 配置——以防某处出现明显缺陷......

将 org.hibernate.transaction.JBossTSStandaloneTransactionManagerLookup 用于事务查找类时出现异常。

添加依赖后出现异常(附带了很多间接依赖)

0 投票
3 回答
3987 浏览

jpa - Aspectj 编译时基于编织的事务不起作用(来自 WebService 调用的 JPA)

我正在尝试使用带有编译时编织的 aspectj 来支持 Spring 的 @Transactional 和 @Configurable 等注释。我正在使用 org.springframework.orm.jpa.JpaTransactionManager 事务管理器,当我尝试在我的 GenericDAO 中调用 entityManager.persist(entity) 时,我在日志中看到的内容是这样的:

所以每个表的休眠序列得到更新,但我的实体没有插入到数据库中。

如果我添加 entityManager.flush() ,则会出现一个异常,指出“没有事务正在进行中”。

这里发生了什么?!

我的 GenericDAO 类如下所示:

我从使用WSSpringServlet导出的 Web 服务调用 saveOrUpdate 方法。

PS:我的 Maven 配置也是这样的:

编译时,我得到了一些看起来足够体面的东西(我的方面得到应用):

我相关的 Spring 配置是:

所以一切看起来都不错,但我找不到为什么这不起作用的答案......

0 投票
1 回答
3679 浏览

java - 具有多个 TransactionManager 的 Spring TransactionInterceptor

在一个 web 应用程序中,我使用不同的组件,这些组件都使用 Spring 3.0.x,它们有自己的DataSourceTransactionManager(都具有不同的名称)。它们都通过“主”webapp 包含在上下文中,包括它们的 spring 配置。

在我使用声明式事务管理的组件的每个 Spring 配置中,通过

对于每个应该是事务性的方法,我添加一个如下所示的注释:

我遇到的问题是我发现只TransactionInterceptor创建了一个引用事务管理器之一而不是组件本身之一的引用。有没有办法处理这个?喜欢将 a 指定TransactionInterceptor为 bean,然后在@Transactional注解中引用它?

我认为有可能通过TransactionProxyFactoryBean在每个组件中指定 a 并通过 xml 配置进行声明性事务管理。但这是我想避免的。

Spring docs ( 10.5.6.2 Multiple Transaction Managers with @Transactional ) 中描述的建议方法不起作用。

0 投票
1 回答
6237 浏览

spring - Spring 事务管理器是否将连接绑定到线程?

我找到了以下线程:JdbcTemplate 与 TransactionManager 究竟如何协同工作?

其中的第一句话:

据我了解,DataSourceTransactionManager 将指定 DataSource 的 JDBC 连接绑定到当前线程,允许每个 DataSource 一个线程绑定连接。如果它是一个连接池,它将占用一个可用连接。

...正是我想知道的。

使用事务管理器时,您是否最终每个线程都有自己的单个连接?另外,这种连接能持续多久?同一个线程是否在单个请求中使用相同的连接,还是有其他事情发生?我只是想了解当您拥有事务管理器和没有事务管理器时 Spring 到底在做什么(不管您是否真的有事务)。

0 投票
1 回答
3569 浏览

spring - 使用事务向异步服务发送消息

我有一个持久的事务队列,其中包含我需要通过异步协议发送的消息。每条消息都需要在自己的事务中发送,但是在给定时间正在传输的消息数量排除了使用thread-per-message,而吞吐量要求排除了持久的中间状态。

查看 的代码JmsTransactionManager,我看到它正在使用TransactionSynchronizationManager,它将事务资源存储在ThreadLocal. 所以看来我需要实现一个PlatformTransactionManager以某种方式在一个线程中引导多个事务。这似乎有点极端……

是否有一些 Spring Integration 单元的安排可以避免这种复杂性?我是否应该查看 JTA/XA 信息?

0 投票
1 回答
663 浏览

hibernate - Struts + Spring + Spring 托管事务 + hibernate

我使用 Struts 作为前端,使用 Spring 作为 IOC,使用 hibernate + c3p0 作为数据源池。我正在为我的持久层使用 annotationsessionfactory bean 和 @Transaction 注释。所有这些都是使用 spring bean 管理的。

但是如果我不在持久层方法上使用@transactional 注释,我的数据也会被保存。

例子:

豆是

会话工厂是弹簧注释工厂,事务是这样管理的。

这种方法可以保存数据,但我根本不让它成为事务性的。据我说,它必须通过异常。我正在使用 oracle 11g 和 j-boss 4.2 服务器。我在想的是我的交易没有得到管理。任何例子都值得赞赏。

0 投票
1 回答
591 浏览

java - 程序化事务 AOP?

我想通过 Java 以编程方式设置以下基于 XML 的事务 AOP:

到目前为止,我有以下内容。我可以像这样创建表达式切入点:

然后也许使用AspectJPointcutAdvisorAspectJAroundAdvice我的组合可以设置实际的建议。

然而,在查看支持tx命名空间的 Spring 代码时,似乎 aTransactionInterceptor已创建。也许我看错了。

你问我为什么要这样做?

好吧,我已经将我的 spring 配置从 XML 移动到 @Configuration 类,但我一直坚持如何翻译 tx 命名空间的东西。虽然,我在使用@EnableTransactionManagement@Transactional注解,但是将注解添加到与上述切入点表达式匹配的所有方法中风险太大。我一定会错过一些东西。

0 投票
1 回答
1734 浏览

spring - 使用 JAX-RS 和 Hibernate 实现 Spring 事务

背景

我正在尝试使用 Apache-CXF 实现一个 RESTful Web 服务,该服务与数据库交互以通过 Hibernate 执行一些 CRUD 操作。Web 服务使用 Jackson JAX-RS Provider 使用和生成 JSON 格式的对象。

我目前收到“无法延迟初始化集合......没有关闭会话或会话”异常,当它尝试序列化响应对象时,它从 Jackson 提供程序冒泡。

我假设如果我标记了服务方法,@Transactional那么当杰克逊提供者序列化响应时,该会话将可供杰克逊提供者使用,但情况似乎并非如此。

问题

当杰克逊在序列化期间行走对象时,如何使休眠会话可用?

我试过的

弹簧配置

服务豆

收集豆

0 投票
2 回答
5048 浏览

java - 使用 Spring Test 执行 SQL 脚本正在提交更改

我正在尝试使用 Spring 在我的 JUnit 测试中执行 SQL 脚本。该脚本用于为测试设置数据。但是,当脚本运行时,脚本中的 INSERT 将在每次测试后提交。Spring 文档说不要期望使用 DDL 进行回滚,但我的脚本中的所有内容都是 DML。它只包含 INSERT 语句并获取最后一个插入 ID (SET @blah = LAST_INSERT_ID())。

我配置错了吗?我正在对 MySQL 数据库使用它。我们的配置如下:

这是我根据一些研究认为正在发生的事情。第一次调用 executeSqlScript 在单独的事务中运行。Spring 的 SimpleJdbcTemplate.update 方法由 executeSqlScript 调用。因为这是从连接池获得的 JDBC 连接的范围,所以我不能保证在后续访问数据库时获得相同的连接,因此不能保证在同一个事务中运行。

如果我要通过 TransactionManager 或 (Hibernate Session Factory) 执行所有数据库操作,那么它将起作用,因为内部如何确定事务的范围。我的选择是:

  1. 弄清楚如何运行 SimpleJdbcTemplate.update 以及我在同一事务中测试的后续实际代码。我想我可以做到这一点,但到目前为止我的努力是徒劳的。

  2. 通过 SessionFactory 设置我所有的测试数据。因此,我不会通过 JDBC 直接执行 SQL 脚本,而是填充模型对象并通过 Hibernate DAO 持久化它们。

我在正确的轨道上吗?谁能提供更多指导?