java - 从事务测试中查看数据 - Hibernate + Spring + MySQL

标签 java mysql hibernate spring automated-tests

我在 Hibernate/Spring 应用程序中进行了一系列测试。昨天,我将它们从使用 Spring 提供的 JUnit 3.8 基础测试类转换为 JUnit 4.4。

一切都很好,因为现在,我的测试包含在事务中,创建/修改的数据会自动回滚(而不是我编写代码来删除新创建的实体)。

唯一的问题是我无法在测试执行期间窥视数据库。如果测试失败,我经常在接近尾声的地方添加断点并通过 SQL Yog 窥视 MySQL 数据库以查看发生了什么上。但是现在,我只看到空表。 (我的意思是在非常接近地模拟生产并实际接触数据库的集成测试中。)

我尝试将全局隔离级别设置为未提交读取,但这并没有改变我看不到数据的事实。如何配置 Spring/Hibernate 以允许我查看来自另一个进程的数据?

最佳答案

我遇到了同样的问题,发现在使用 YOG 时设置session 隔离级别有时会有所帮助。

SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

这只揭示了另一个令人不安的问题 - 在运行测试时,Hibernate 实际上并没有运行某些操作,除非我在每次 Hibernate 操作后使用 HibernateTemplate.flush();。 由于这非常烦人,我最终设置了 Hibernate,使其始终刷新 查询,如下所示:

HibernateTemplate hibernateTemplate;

... 

hibernateTemplate.setFlushMode(HibernateTemplate.FLUSH_ALWAYS);

关于java - 从事务测试中查看数据 - Hibernate + Spring + MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5675928/

相关文章:

php - 使用 PHP 对不同字段的 mysql 输出进行排序

java - Hibernate session 工厂问题

java - hibernate下什么时候需要实现Hashcode和Equals?

oracle order by 运行速度非常慢

java - 使用 Java (JNA) 检测进程是否空闲

java - jsr 303(Bean Validation)是否有通用的约束库?

java - Struts 1.3 : Difference between name and attribute attributes in action tag within StrutsConfig. XML?

mysql - 日期时间与时间戳字段

mysql - 为什么我们需要 SQL 的游标?

java - 单一注销不适用于 Shibboleth IdP