当前位置: 首页 > 面试题库 >

春季交易管理测试

龚俊捷
2023-03-14
问题内容

我想使用SpringContextTests测试我的Dao类。
在我的方法类中,我扩展了AbstractTransactionalJUnit4SpringContextTests,以便我的测试类与JUnit4集成。我还设置了配置,并在@Before和的DownDown中进行了初始化和数据库清理@After。我的测试课效果很好。

我的问题是,当我运行测试类并且数据库中充满了数据时,原始数据没有回滚并且数据库被清除了。在该@Before方法中,我清除数据库并填充数据,以为我可以回滚数据库,但不能回滚。

任何人都可以找到一个可以正常工作的示例并回滚数据库中的信息。

ADDONS:
我的测试方法中的每个数据库操作都会回滚。但是执行super.deleteFromTables("person")在该@Before方法中没有回滚数据库中以前的所有数据。

Spring回滚所有CRUD操作,但在不回滚事务之前清除数据库。


问题答案:

谢谢所有回答我问题的人。我从这些答案中学到了很多东西,但是并不能解决我的问题。
我知道我的测试数据可以进行事务管理,并且可以正常工作。
这是我的错。

我忘记了有关数据库命令的课程,当您在DML语句之后执行DDL语句时,它将自动提交事务。我执行的DML后DDL通过删除所有记录,然后ALTERAUTO_INCREMENT表在哪里它会导致自动提交,并删除表中的所有记录永久的。

解决该场景解决了我的问题。



 类似资料:
  • 问题内容: 我正在开发基于JPA +Hibernate,Spring和Wicket的Web应用程序。我想知道在我的代码中实现事务的最佳方法是什么?我应该使用什么交易经理?应该是,还是其他?我想用Spring来管理我的交易。 问题答案: 南大是正确的,你 可以 只使用JpaTransactionManager接口。我们在这里谈论的事务管理器抽象是Spring的PlatformTransactionM

  • 问题内容: 我有一个具有事务性属性的方法: 可以同时多次调用此方法,并且对于每个事务,如果发生错误而不是回退(独立于其他事务),则对于每个事务。 问题是,这可能迫使Spring创建多个事务,即使另一个事务可用,也可能会导致一些性能问题。 Java doc 说: 这似乎解决了性能问题,不是吗? 回滚问题呢?如果在使用现有事务时新方法调用回滚怎么办?那会不会回滚整个交易,即使以前的呼叫也是如此? [编

  • 问题内容: 您能否解释以下两种类型的交易之间的区别: 休眠交易 春季交易 我也想知道有关注释的信息。 问题答案: 对于初学者来说,它们都是事务,但是它们包含不同的概念和组件。 TL; DR Hibernate处理数据库特定的事务,而spring提供常规的事务管理服务。是配置事务管理行为的好方法。 长话说: 交易次数 事务基本上是工作的单元(即,对某项的更改),可以作为可提交或回滚的单个操作进行管理

  • 问题内容: 我有一个maven spring项目(最新版本),我想编写一些junit测试(最新版本)。 我的问题是我的Spring bean是自动装配的,当我从junit test调用它们时,我得到了空指针异常,因为spring不能自动装配它们。 如何加载上下文,以便自动连线? 问题答案: 您是否学习过Spring参考文档中的“ 测试”一章?这是您应该从以下示例开始的示例: 如果您进入,则需要-但

  • 交易管理器 web3j提供了一个交易管理器TransactionManager来控制你连接到以太坊客户端的方式。默认机制使用web3j的RawTransactionManager,它与以太坊钱包文件一起工作,在提交到网络之前离线地签署交易。 但是,你可能希望修改交易管理,也可以将其传递给智能合约部署和构建方法deploy,而不是凭据对象,即: YourSmartContract contract

  • 问题内容: 我有一个Java应用程序,它从主类开始(不是Spring Boot应用程序)。而且我想使用Spring retry在连接丢失时重试。据我所知,我需要在Spring应用程序的主类之上添加@EnableRetry批注,然后在我的方法之上使用@Retryable进行重试。但是我认为这在非​​Spring应用程序中将不起作用。是否可以在简单的Java应用程序(而非spring应用程序)中使用s