问题标签 [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.
hibernate - spring jpa transaction 查询数
我们的项目使用 Spring + JPA + Hibernate + MYSQL。使用 EHCache、查询缓存和 c3p0 也是如此。
在代码中的某一时刻,我们为每个请求启动一个新事务。
就在离开创建事务的方法之前,我想获取在当前事务中访问数据库的查询数。
请指导我如何获取此信息。
java - AbstractRoutingDataSource 和事务管理器
我目前有一个程序,它有两个数据源。每个数据源都绑定到一个事务管理器。
如果我有一个同时访问数据源的函数并且发生错误,如果一个数据源回滚,第二个数据源也会回滚吗?
谢谢!
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 对交易的看法。我似乎在交易行为方面遗漏了一些东西。
我在这里做错了什么。
我有以下定义
数据配置
spring - Spring @Transactional v Spring Security @Secured 不一致的行为
Spring 文档建议将 @Transactional 注释放在具体的类/方法而不是接口上。其原因已在 Stack Overflow 上多次介绍过,例如:
我应该将@Transactional 注释放在哪里:在接口定义或实现类中?
Spring Security @Secured 行为不同;大多数文档显示将注释放在界面上。事实上,无论您是注释接口还是具体类,无论您使用 JDK 还是 CGLib 代理,它似乎都有效。
这似乎是一个优越的解决方案。那么为什么不一致呢?对上述问题的一个答案表明对性能有影响......但性能肯定对安全性同样重要吗?!
以及@Secured 解决方案如何处理菱形继承问题(类实现 2 个接口都具有不同的@Secured 相同方法)?
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,因为我不太喜欢后端事务发生在服务层之外的想法。
所以,我很难过。有没有人有任何想法?我尝试过的其中一件事应该已经奏效了吗?(可能我搞砸了。)
提前致谢。
spring - 如何使spring事务原子化
我需要以原子方式在数据库中保留一些实体,但我遇到了一些困难......我有 4 个实体:Emitente、NotaFiscal、Item 和 Duplicata。实体 Item 和 Duplicata 依赖于 NotaFiscal,而 NotaFiscal 又依赖于 Emittente。所以,我的 dao 类尝试坚持 Emittente,然后是 NotaFiscal,然后是 Duplicata,最后是 Item。但是,当我尝试坚持 NotaFiscal 时,我收到一条错误消息,指出 Emittente 不存在。这些相同的实体使用 entityManager.getTransaction().begin(); 当这个程序是桌面时的方法......
这是调用所有 Dao 类的类:
这是弹簧配置:
我能做些什么来解决它?
spring - Spring + hibernate,嵌套的 NOT_SUPPORTED 事务属性
弹簧配置:
是否可能有嵌套的 REQUIRED_NEW 传播,该传播将从具有传播 NOT_SUPPORTED 的方法中调用?
问题是我们在 dumpAllData() 中运行了一个广泛的数据库操作(~ 100Mb),所以我们不想在事务中(否则这将是性能问题)。但是我们希望在 updateItem 方法(我们只做简单的实体更新)中的事务(回滚/提交)。
spring - 带注释的多事务管理器 Spring 配置
JpaTransactionManager 有两个bean。
可以使用限定符符号来管理它们。
Java代码:
问题是:如何使用隔离级别或只读分配?@Qualifier 注释不起作用:
我怎么解决这个问题?
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 !
==================================================== =================================
实体:
下
/li>myproject.data.entity
。没什么特别的。通用 JPA。
DAO:
下的接口myproject.data.dao
。
/li>interface AbstractDao
/li>interface MyEntityDao
下实施myproject.data.dao.jpa
。
/li>abstract class AbstractDaoJpa
/li>class MyEntityDaoJpa extends AbstractDaoJpa implements MyEntityDao
服务层:
下的接口myproject.data.service
/li>interface EntityService
/li>interface MyEntityService extends EntityService
实施下myproject.data.service.impl
/li>class MyEntityServiceImpl implements MyEntityService
弹簧配置:
spring - Spring @Transactional 和 Spring Security @PreAuthorize 的顺序
所以我有以下内容:
调用该方法时getObj(id)
,首先将所有内容包装在事务中,然后检查授权。是否可以保留此配置并首先让 Spring 检查授权,然后在用户获得授权时创建事务?
我花了很多时间寻找答案,但找不到任何东西。