2012-06-15 45 views
0

我正在使用Hibernate将对象映射到包含通过注释(如XML文件是如此2003)一些ginormous表的遗留架构。由于这些类是如此之大,所以偶尔会偶尔出现一个错字,Hibernate在我尝试运行它之前并不会告诉我这些错误。测试休眠映射

这是我已经试过:

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

这会导致类的字符串值来验证varchar(255)。由于数据库中的许多列类型为CHAR(n),因此会出现此类问题。我将不得不将添加到几百个映射。

二:使用Unitils。

通过Maven导入这些导致依赖库导入,导致代码的其他部分崩溃。例如:我使用的是Hibernate 4.1,但是Unitils导入了Hibernate 3.2.5并且炸毁了一个UserType。

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

Hibernate通过Spring应用程序上下文进行配置。

有什么想法吗?

回答

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作为测试的一部分自动部署表。

+0

很好的答案,但不是我所期待的。我想要的是一种测试所有映射的方法,无需编写查询。这看起来像我想要的不是那么容易。 – Jason

+0

在我看来,测试映射的唯一方法是执行查询。除非你写了一个实用程序来检查你的课堂上的注释......这听起来不太直截了当。 –