我有一个必须相当常见的设置:我有一个H2 db,带有一个db文件。我在独立模式下使用db。 Hibernate提供对db的访问,我已经将我的代码部署到Tomcat中。
问题是:我找不到简单的方法将db文件放入war
并在hibernate配置文件中提供相对路径。
目前,我必须在hibernate配置中使用c:// whatever_db_file_container_dir / dbname的路径。
这使我无法部署零配置Web应用程序。有没有办法将此设置转换为自包含零配置包?
答案 0 :(得分:2)
目前,H2不支持类路径中的数据库(有一个功能请求,但它尚未实现)。但这只适用于只读数据库。不幸的是,H2还不支持数据库URL中的系统属性。
但是,Hibernate支持Programmatic configuration。我不知道如何在Tomcat中获取Web应用程序的目录,但我知道catalina.home and catalina.base。因此,在启动应用程序时,获取catalina.home
系统属性的值,并相应地使用数据库URL设置Hibernate系统属性。我没有尝试自己,但这是它应该如何运作。
答案 1 :(得分:0)
如果您不想等待实现的功能,可以在代码中动态设置H2(或HSQL,derby)url。请查看http://www.jvmhost.com/spring-hosting以获取代码示例。