能否请您解释一下以下两种交易类型的区别:hibernate事务Spring交易我也想知道@Transactional注释。 最佳答案 对于初学者来说,它们都是事务,但它们包含不同的概念和组件。TL;DRHibernate处理特定于数据库的事务,而Spring提供一般事务管理服务。@Transactional是配置事务管理行为的好方法。长篇大论:交易事务基本上是作为单个操作进行管理的工作单元(即对某些内容的更改),可以提交或回滚。Java世界中有许多不同类型的事务——数据库、消息传递系统(如JMS)、应用程序间事务(适用于那些胆小的人
@Transactional(rollbackFor=MyCheckedException.class)publicvoidfoo(){thrownewRuntimeException();}这个事务会被回滚,还是我也需要在注解中包含RuntimeException.class? 最佳答案 不需要在rollbackFor列表中包含RuntimeException。即使您不提及它,它也会处理。我已经为jdbcTemplate尝试过:-@Transactional(propagation=Propagation.REQUIRED,rol
是否可以在spring中嵌套@Transactional注解的方法?考虑这样的事情:@Transactionalpublicvoida(){obj.b();}@Transactionalpublicvoidb(){//...}如果我在b()中回滚并在a()中回滚,在这种情况下会发生什么? 最佳答案 方法b()上的第二个@Transactional注释不是必需的,因为默认情况下@Transactional具有REQUIRED的传播,因此方法a()调用的方法将是事务性的。如果您希望在方法a()调用的方法中启动新事务,则需要修改传播规则。
这是我的问题:我正在JavaEE/Spring/Hibernate应用程序上运行批处理。此批处理调用method1。这个方法调用一个method2,它可以抛出UserException(一个扩展RuntimeException的类)。这是它的样子:@TransactionalpublicclassBatchServiceimplementsIBatchService{@Transactional(propagation=Propagation.REQUIRES_NEW)publicUsermethod2(Useruser){//Processing,whichcanthrowaRunt
我正在尝试使用示例Struts2+Spring+Hibernateintegrationexample来学习Hibernate-Spring-Struts.但在创建pom.xml后出现此错误:Missingartifactjavax.transaction:jta:jar:1.0.1B我仅在创建pom.xml文件方面取得了进展,并进行了更改以包含最新的库。这是我的pom.xml:4.0.0S3HMavenS3HMaven0.0.1-SNAPSHOTjarS3HMavenhttp://maven.apache.orgUTF-8junitjunit4.11testjavax.transac
如果我们在带有@Transactional注解的方法中捕获到异常,如果发生异常会回滚吗?@Transactional(readOnly=false,propagation=Propagation.REQUIRED,rollbackFor=Throwable.class)publicvoidyearEndProcess(){try{//tryblock}catch(Throwablethrowable){//catchblock}} 最佳答案 例如classA{@TransactionalpublicResultdoStuff(){R
在Spring中,使用@Transactional注释的方法如果还没有新事务,则将获得一个新事务,但我注意到,如果调用事务性方法,它不会获得任何事务从非交易的。这是代码。@ComponentpublicclassFooDao{privateEntityManagerentityManager;@PersistenceContextprotectedvoidsetEntityManager(EntityManagerentityManager){this.entityManager=entityManager;}@TransactionalpublicObjectsave(Objectb
我之前有一篇关于此问题的帖子已解决。但是,自从使用自动连接的bean和更少的XML配置重建项目后,我发现我正在重新审视这个问题。我遵循了我以前的项目实现这一点的方式,但它不起作用。有人可以帮我解释为什么或我应该改变什么来使它工作吗?我故意在插入用户详细信息方法中使用不存在的表名来故意抛出异常。但是,插入用户和插入用户角色的语句不会回滚。请帮忙。我目前的注册设计是这样的。servlet.xml的一部分:应用程序上下文的一部分:注册Controller:packagecom.doyleisgod.golfer.controllers;importjavax.validation.Valid
假设我们已经在Spring(4.2.7版)中正确配置了由Hibernate(4.3.11版)支持的JPA。启用了hibernate一级缓存。我们使用声明式事务。我们有OuterBean:@ServicepublicclassOuterBean{@ResourceprivateUserDaouserDao;@ResourceprivateInnerBeaninnerBean;@Transactional(propagation=Propagation.NEVER)publicvoidwithoutTransaction(){Useruser=userDao.load(1l);System
我的应用程序(javaspring-core)有多个线程同时运行并访问数据库,我在某些高峰时间遇到异常07:43:33,400WARN[org.hibernate.util.JDBCExceptionReporter]SQLError:1213,SQLState:4000107:43:33,808ERROR[org.hibernate.util.JDBCExceptionReporter]Deadlockfoundwhentryingtogetlock;tryrestartingtransaction07:43:33,808ERROR[org.hibernate.event.def.A