测试Hibernate映射

时间:2012-06-15 12:32:14

标签: spring hibernate

我正在使用Hibernate将对象映射到遗留模式,该模式通过注释包含一些巨大的表(因为XML文件是如此2003)。由于这些类是如此之大,是的,我偶尔会偶尔输入错字,Hibernate在尝试运行它之前不会费心去告诉我。

这是我尝试过的:

一:将hbm2ddl.auto设置为“验证”:

这会导致类的String值针对varchar(255)进行验证。由于数据库中的许多列类型都是CHAR(n),因此会爆炸。我必须将columnDefinition="CHAR(n)"添加到几百个映射中。

二:使用Unitils。

通过Maven导入这些导致依赖库的导入会破坏其他代码段。示例:我正在使用Hibernate 4.1,但Unitils导入了Hibernate 3.2.5并炸毁了UserType。

那么,还有另一种方法吗?我查看了Unitils代码,看看我是否可以简单地抽出我需要的部分(当我只需要一个方法时,我经常使用apache-commons),但这不是一个简单的任务。

Hibernate是通过Spring应用程序上下文配置的。

有任何想法吗?

1 个答案:

答案 0 :(得分:1)

我会使用Spring测试框架针对内存数据库(HSQLDB,H2)编写测试。当您尝试对表运行查询时,您将很快看到任何映射错误。

测试类看起来像这样:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes=MyTestConfig.class)
@TransactionConfiguration(transactionManager="txMgr", defaultRollback=true)
public class MyTest {

    @Autowired
    private SessionFactory sessionFactory;

    // class body...
}

我会将Hibernate配置为自动部署表作为测试的一部分。