我正在使用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应用程序上下文配置的。
有任何想法吗?
答案 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配置为自动部署表作为测试的一部分。