【发布时间】:2020-02-25 22:17:39
【问题描述】:
我在测试中使用 Spring 事务 (@Transactional)。基本上,我有一个 DAO 层,其中每个方法都有一个 @Transactional 方法。在测试类中,如果我不指定@Transactional,我可以看到数据库中的数据(所以数据被保存了),否则在类上添加@Transactional 不会持久化数据。但是,一旦测试结束,数据就会被持久化。
你知道它为什么这样做吗?
【问题讨论】:
-
那么你会怎么做呢?我希望它刷新更改,以便我可以查看数据然后还原更改。
-
the class does not persist the data到底是什么意思?如果您的测试是以事务方式运行的,那么在该事务提交之前,该事务的外部 将无法查看任何更改。因此,例如,如果您的测试执行INSERT INTO table (...) VALUES (...),那么尝试使用外部连接管理器/客户端(例如psql)查询状态将不会显示这些更改。但是,如果您使用正在创建这些事务的连接管理器进行查询,这些更改应该仍然可见。
标签: java spring transactions