问题标签 [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 回答
981 浏览

hibernate - spring jpa transaction 查询数

我们的项目使用 Spring + JPA + Hibernate + MYSQL。使用 EHCache、查询缓存和 c3p0 也是如此。

在代码中的某一时刻,我们为每个请求启动一个新事务。

就在离开创建事务的方法之前,我想获取在当前事务中访问数据库的查询数。

请指导我如何获取此信息。

0 投票
3 回答
1723 浏览

java - AbstractRoutingDataSource 和事务管理器

我目前有一个程序,它有两个数据源。每个数据源都绑定到一个事务管理器。

如果我有一个同时访问数据源的函数并且发生错误,如果一个数据源回滚,第二个数据源也会回滚吗?

谢谢!

0 投票
2 回答
1982 浏览

java - Spring Hibernate 事务异常回滚

2011 年 12 月 12 日更新

该应用程序正在使用可以在此处找到的通用 DAO 类。

基于重新阅读关于使用@Repository 的spring 手册,看来我需要将其添加到我的GenericDAO 实现中,以便spring 处理异常翻译。

我将 @Repository 添加到 GenericDAO 但结果没有改变。父对象仍被持久化到数据库中。


使用 Spring 2.5.6、JBoss 5.1 及其休眠版本、Spring MVC、MySQL

我正在做一些测试以确保在发生异常时我的事务将正确回滚。在下面的代码中,第二个方法:createProfile 将抛出一个 NullPointerException,从而阻止该方法完成。我曾预计交易会被回滚。我发现用户对象被持久化到数据库中。我想要的是,如果第二个操作失败,那么第一个操作也需要回滚。

我做了一些更改,将父方法的传播更改为 REQUIRED_NEW,但没有看到行为发生任何变化。

我已经打开了春季交易的日志记录。

我一直在这里查看不同的帖子,并查看spring 对交易的看法。我似乎在交易行为方面遗漏了一些东西。

我在这里做错了什么。

我有以下定义

数据配置

0 投票
1 回答
875 浏览

spring - Spring @Transactional v Spring Security @Secured 不一致的行为

Spring 文档建议将 @Transactional 注释放在具体的类/方法而不是接口上。其原因已在 Stack Overflow 上多次介绍过,例如:

我应该将@Transactional 注释放在哪里:在接口定义或实现类中?

Spring Security @Secured 行为不同;大多数文档显示将注释放在界面上。事实上,无论您是注释接口还是具体类,无论您使用 JDK 还是 CGLib 代理,它似乎都有效。

这似乎是一个优越的解决方案。那么为什么不一致呢?对上述问题的一个答案表明对性能有影响......但性能肯定对安全性同样重要吗?!

以及@Secured 解决方案如何处理菱形继承问题(类实现 2 个接口都具有不同的@Secured 相同方法)?

0 投票
1 回答
263 浏览

hibernate - Spring 的 HibernateTransactionManager 可以应用于非 bean 吗?

简短的问题:我如何(或可能)在 Spring 中未声明为 bean 的类中使用 Spring 的事务管理器?

细节......我有一个使用 Spring 3 和 Hibernate 3.6 的应用程序,以及两个这样的类:

FooManagerImpl是一个 Spring bean(见下文),但FooImpl不是。 FooImpl与第三个类 有父/子关系Bar,它也是一个实体(这是事情破裂的地方)。

以及来自 Spring 配置的相关部分:

现在据我了解,在调用 时FooImpl.addBar(Bar),Hibernate 将尝试保留更改,但由于没有事务绑定而失败。没有 TX 绑定,因为 Spring 没有代理其中的任何方法,FooImpl因为它不是 bean。这是正确的评价吗?有没有办法让这个工作?

到目前为止我找到的解决方案,但似乎不太奏效(或者我无法让它们工作):

  • 设置一个 AOP 代理来插入事务性建议,就像这里一样。但据我所知,这些代理只有在我将类定义为 bean 时才适用,对吧?

  • 我想我也可以使用 AspectJ,例如<tx:annotation-driven mode="aspectj"/>,但这似乎需要我使用不同的类加载器,由于各种原因,我不能这样做(需要更改 Tomcat,而不仅仅是我的 webapp ......我认为) . 见这里

  • 我真的不想使用 OpenSessionInView,因为我不太喜欢后端事务发生在服务层之外的想法。

所以,我很难过。有没有人有任何想法?我尝试过的其中一件事应该已经奏效了吗?(可能我搞砸了。)

提前致谢。

0 投票
1 回答
1055 浏览

spring - 如何使spring事务原子化

我需要以原子方式在数据库中保留一些实体,但我遇到了一些困难......我有 4 个实体:Emitente、NotaFiscal、Item 和 Duplicata。实体 Item 和 Duplicata 依赖于 NotaFiscal,而 NotaFiscal 又依赖于 Emittente。所以,我的 dao 类尝试坚持 Emittente,然后是 NotaFiscal,然后是 Duplicata,最后是 Item。但是,当我尝试坚持 NotaFiscal 时,我收到一条错误消息,指出 Emittente 不存在。这些相同的实体使用 entityManager.getTransaction().begin(); 当这个程序是桌面时的方法......

这是调用所有 Dao 类的类:

这是弹簧配置:

我能做些什么来解决它?

0 投票
2 回答
1241 浏览

spring - Spring + hibernate,嵌套的 NOT_SUPPORTED 事务属性

弹簧配置:

是否可能有嵌套的 REQUIRED_NEW 传播,该传播将从具有传播 NOT_SUPPORTED 的方法中调用?

问题是我们在 dumpAllData() 中运行了一个广泛的数据库操作(~ 100Mb),所以我们不想在事务中(否则这将是性能问题)。但是我们希望在 updateItem 方法(我们只做简单的实体更新)中的事务(回滚/提交)。

0 投票
1 回答
2400 浏览

spring - 带注释的多事务管理器 Spring 配置

JpaTransactionManager 有两个bean。

可以使用限定符符号来管理它们。

Java代码:

问题是:如何使用隔离级别或只读分配?@Qualifier 注释不起作用:

我怎么解决这个问题?

0 投票
1 回答
817 浏览

jpa - 服务方法返回后开始的 Spring 声明性事务

我一直在通过使用以下方法实现 JavaEE Web 应用程序来自学 Spring 3.0:

  • 雄猫7
  • 春天3.0,安全 3.1
  • JPA:EclipseLink 2.3.1
  • MySQL 5.5,连接器/J 5.1

我的问题是:

  • 我已经使用 Spring AOP在我的服务层上设置了声明式事务管理。
  • (我还有一个 Spring AOP 日志拦截器,在同一个地方声明。)
  • 创建新实体不是问题。
  • 更新现有实体是!
  • 根据日志,服务方法在事务开始之前就返回了!

    /strike>
  • 如果我将我的 DAO 设为事务性,而不是我的服务层,这种无法更新的情况就会消失。

  • 但当局说那是不好的风格。

任何人都可以提供公会的任何指针/提示/技巧/秘密吗?

编辑:

DEBUG在记录器中打开了 org.springframework 的详细信息;并看到,据我所知,事务毕竟得到了正确的处理——即,在所讨论的服务方法之前开始并在之后结束。

我仍然有更新问题,即。我的更新没有出现在 PU 和 DB 中;现在为什么会这样?...

编辑:

在尝试更新时,我还查看了 MySQL 通用日志。JPA 似乎根本没有向UPDATE数据库发出 s !

==================================================== =================================

实体:

  • myproject.data.entity。没什么特别的。通用 JPA。

    /li>

DAO:

下的接口myproject.data.dao

  • interface AbstractDao

    /li>
  • interface MyEntityDao

    /li>

下实施myproject.data.dao.jpa

  • abstract class AbstractDaoJpa

    /li>
  • class MyEntityDaoJpa extends AbstractDaoJpa implements MyEntityDao

    /li>

服务层:

下的接口myproject.data.service

  • interface EntityService

    /li>
  • interface MyEntityService extends EntityService

    /li>

实施下myproject.data.service.impl

  • class MyEntityServiceImpl implements MyEntityService

    /li>

弹簧配置:

0 投票
1 回答
5204 浏览

spring - Spring @Transactional 和 Spring Security @PreAuthorize 的顺序

所以我有以下内容:



调用该方法时getObj(id),首先将所有内容包装在事务中,然后检查授权。是否可以保留此配置并首先让 Spring 检查授权,然后在用户获得授权时创建事务?

我花了很多时间寻找答案,但找不到任何东西。