在我的项目中,我有很多 hbm.xml 文件,我从中生成 java 类和 db 的 sql。hbm.xml 文件中的语义错误在调用 buildSessionFactory() 后显示给我,这对于当前情况来说真的很烦人。我想有一个测试类,它用稍微不同的配置为我做这件事(改用 ebedded derby)。我目前的“解决方案”是这样的:
String dbName = "test";
try{
SessionFactory fact = new Configuration().configure()
.setProperty("hibernate.connection.driver_class","org.apache.derby.jdbc.EmbeddedDriver")
.setProperty("hibernate.connection.url","jdbc:derby:" + dbName + ";create=true")
.setProperty("hibernate.connection.username","")
.setProperty("hibernate.connection.password","")
.setProperty("hibernate.dialect","org.hibernate.dialect.DerbyDialect")
.setProperty("hibernate.hbm2ddl.auto","create-drop")
.buildSessionFactory();
assertNotNull(fact);
Session s = fact.openSession();
assertNotNull(s);
s.close();
fact.close();
}catch(Throwable t){
fail(t.getMessage());
}
但从我的角度来看,这并不令人满意。我还想检查命名查询等是否一切正常。有没有办法在自动化过程中进行这种测试?
我的问题的第二部分是,如果 derby 是一个不错的测试选择,为什么我不能在测试结束后自动删除数据库?我想在 url 中指定一个参数,例如
"jdbc:derby:" + dbName + ";create=true;drop=true"
通过使用这个解决方案,我最终在我的项目目录中得到了一个名为变量 dbName 的目录和一个 derby 文件,这并不酷。