如何在Tomcat下使用hibernate为H2数据库文件提供相对路径?

时间:2010-10-11 11:58:39

标签: hibernate tomcat path relative h2

我有一个必须相当常见的设置:我有一个H2 db,带有一个db文件。我在独立模式下使用db。 Hibernate提供对db的访问,我已经将我的代码部署到Tomcat中。

问题是:我找不到简单的方法将db文件放入war并在hibernate配置文件中提供相对路径。

目前,我必须在hibernate配置中使用c:// whatever_db_file_container_dir / dbname的路径。

这使我无法部署零配置Web应用程序。有没有办法将此设置转换为自包含零配置包?

2 个答案:

答案 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以获取代码示例。