所以我是Spring的新人,目前对@Transactional Annoting感到困惑,我已经阅读了很多关于这个主题的问答,但似乎我仍然不明白。
这是我的问题:
> < li>
执行插入更新删除时是否需要@Transactional批注?当我试图证明这一点时,我仍然可以执行插入和更新。你知道为什么会这样吗?
如果使用或不使用@Transactional注释,会有什么性能好处或问题吗?比如连接管理。
如果我的程序中不使用@Transactional Annoting会发生什么?
根据我使用@Transactional的经验,更新查询将在方法完成后刷新并提交,并且我在某些情况下不希望发生这种情况。例如:
@Transactional
private void doSomething() {
TransactionEntity te = te.findById("");
try {
//fetch using feign and throw customTimCustomTimeoutException
} catch (CustomTimeoutException e) {
te.workflowFailure("doSomething");
repository.save(te);
}
//validation
//business logic
//save this save that
//end of method and changes will be flushed and committed
}
如果在方法结束时,数据库脱机,它会右回滚,你会失去所有的进度。即使在catch block语句的repository.save(te)中,数据库还是正常的,你也不想失去这个进度。对此有什么解决方案或想法吗?
谢谢。
Crud 存储库
接口时,您不需要为 CRUD 操作@Transactional
。默认情况下,所有这些方法都是事务性的。我猜你是在用这个。退房 https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#transactions读取方法的@Transactional(readOnly = true)时
,将显示性能优势。例如,看看简单Jpa存储库。@Transactional
否则您将获得“java.lang.非法状态异常:没有可用的事务性实体管理器”。在我的应用程序中,我有2个transactionManager,创建如下: 在同一个文件中,我有注释驱动的声明: 为了简化admin transactionManager的可用性,我创建了一个简单的注释: 这是我的带有事务注释的方法: 由于有接口,该方法是从另一个类调用的。bean由Spring@Autowired注释注入。jdbcTemplate对象是用以下代码创建的: 我的问题是当我执行jdb
试图收集和理解@事务性注释的要点并越过了一点。因此,在使用事务性注释时,我们需要记住的主要事情是: 事务注释只能应用于公共方法[根据Spring@Transactional属性对私有方法起作用吗? 事务性注释应该应用于具体的类,而不是接口[根据我应该将@transactional annotation放在接口定义还是实现类的位置? 事务注释应应用于服务级别[根据Spring@Transaction
问题内容: 之间有什么区别? 在整个类中添加“ @Transactional”注释 为每个方法添加“ @Transactional”注释? 使用spring和Hibernate吗? 问题答案: 基本上,如果您用所有方法注释该类,则将是事务性的。如果您不这样做,则可以仅将其标注为所需的方法。此外,你可以为每个方法指定不同的属性,如,,,…
我正在使用Spring(3.1.4版本)和HibernateTemplate(3.6.7.Final)以及Spring数据JPA(1.3.0版本)。我在配置文件中定义了两个事务管理器,一个用于Hibernate,另一个用于Spring数据JPA。两个事务管理器使用不同的数据源。 我想在代码中使用Hibernate的事务管理器和Spring data JPA的事务管理器。(Spring文档链接-10
在我们的一个项目中,我们遇到了一个问题,Spring忽略了事务注释,然后失败了,出现了以下错误。 启动ApplicationContext时出错。要显示条件报告,请在启用“调试”的情况下重新运行应用程序。2018-09-13 15:05:18406错误[主]组织。springframework。靴子SpringApplication应用程序运行失败组织。springframework。道。Inva
我将Spring 3.2.4与JavaFX结合使用,并希望实现一种方法,其中操作将在事务中执行。我在控制器中的代码如下所示: 以及我的应用程序上下文: 尝试运行时,我收到以下错误消息: 该方法存在。删除注释,或者将方法从public更改为private,或者从配置中删除bean,程序就会运行,但事务注释根本不起作用。删除代理目标会导致另一个错误。