“Spring交易”和“Hibernate交易”有什么区别

“Spring交易”和“Hibernate交易”有什么区别,第1张

“Spring交易”和“Hibernate交易”有什么区别

对于初学者来说,它们都是事务,但是它们包含不同的概念和组件。

TL; DR

Hibernate处理数据库特定的事务,而spring提供常规的事务管理服务。

@Transactional
是配置事务管理行为的好方法。

长话说:

交易次数

事务基本上是工作的单元(即,对某事物的更改),可以作为可提交或回滚的单个 *** 作进行管理。在Java世界中,有许多不同类型的事务-
数据库,像JMS这样的消息传递系统,应用程序间事务(适用于那些不太胆小的人)或事务中可能需要包含的其他任何事物。在Java标准中,交易是使用Java交易API进行管理的,该
API设置了如何参与交易的规则。

hibernate

Hibernate是一个ORM,用于将数据库组件抽象为Java对象,因此其事务与数据库中的更改特别相关。事务可由对各种数据库表的一次或多次写 *** 作组成,一旦完成 *** 作,这些写 *** 作将全部提交。回滚事务,例如,如果 *** 作期间发生任何错误,则允许撤消所有更改。

d簧

在最低层次上,Spring
是一个用于管理对象之间的配置和依赖关系的应用程序框架。此外,它还提供了一个接口,用于管理在现代应用程序中使用的高级服务,例如数据库,消息服务,MVC框架和事务。

Spring被设计为用作应用程序中对象和服务的全方位主控,因此,它的事务概念比hibernate相关的数据库特定事务更高。Spring事务旨在让您对所有事务资源进行细粒度的控制,同时抽象出协调事务所需的通常混乱的编码。

@Transactional

Spring提供了几种使用事务的不同方法-
其中包括基于xml的方面,对API进行编码和基于注释的声明性事务。基于注释的事务很方便,因为您不需要将事务管理样板代码添加到您的应用程序中(即使通过API使用PlatformTransactionManager也有很多编码开销)。

因此,基本上发生的事情

@Transactional
是,在运行时spring基于您通过注释配置的内容,在代码库中扫描@Transactional类和方法,并将它们包装在特定于事务的管理代码中。所以这样的方法:

@Transactional(propagation = REQUIRES_NEW, rollbackFor = {Exception.class})public void saveAndSendMessage(Foo foo) throws Exception {    dbManager.save(foo);    Bar bar = transform(foo);    jmsSystem.send(bar);}

可以让spring为数据库和jms系统设置一个新的事务,并协调它们,而无需自动添加所有特定的tx管理代码。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5015729.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-14
下一篇 2022-11-14

发表评论

登录后才能评论

评论列表(0条)

保存