私のプロジェクトには多くの hbm.xml ファイルがあり、そこから Java クラスと db の sql を生成しています。buildSessionFactory() を呼び出した後、hbm.xml ファイル内のセマンティック エラーが表示されます。これは、現在の状況では非常に厄介です。少し異なる設定でそれを行うテストクラスが必要です(代わりに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());
}
しかし、これは私の観点からは本当に満足のいくものではありません。また、名前付きクエリなどがすべて問題ないかどうかも確認したいと思います。自動化されたプロセスでその種のテストを行う方法はありますか?
私の質問の 2 番目の部分は、derby がテストに適している場合、テストの終了後にデータベースを自動的に削除できないのはなぜですか? のように URL にパラメータを指定したい
"jdbc:derby:" + dbName + ";create=true;drop=true"
このソリューションを使用すると、変数 dbName のような名前のディレクトリと、クールではないプロジェクトディレクトリのダービーファイルになります。