【问题标题】:How can I provide a relative path for H2 database file, using hibernate under Tomcat?如何在Tomcat下使用hibernate为H2数据库文件提供相对路径?
【发布时间】:2011-04-23 18:52:48
【问题描述】:

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

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

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

这使我无法部署零配置 Web 应用程序。有没有办法把这个设置变成一个自包含的零配置包?

【问题讨论】:

  • 目前,是的,但如果我以后能以读写方式使用它会很有帮助。
  • 好吧,我认为可以在类路径上查找数据库,但实际上我不知道是否H2 can do that。无论如何,这不符合您未来的需求。

标签: hibernate tomcat path h2 relative-path


【解决方案1】:

目前,H2 不支持类路径中的数据库(有一个功能请求,但尚未实现)。但这仅适用于只读数据库。不幸的是,H2 还不支持数据库 URL 中的系统属性。

不过,Hibernate 支持Programmatic configuration。我不确定如何在 Tomcat 中获取 Web 应用程序的目录,但我知道 catalina.home and catalina.base。因此,在启动应用程序时,获取catalina.home 系统属性的值,并相应地使用数据库 URL 设置 Hibernate 系统属性。我自己没试过,但它应该是这样工作的。

【讨论】:

    【解决方案2】:

    如果您不想等待功能实现,您可以在代码中动态设置 H2(或 HSQL、derby)url。查看http://www.jvmhost.com/spring-hosting 获取代码示例。

    【讨论】:

    • 请注意 link-only answers 是不鼓励的,所以答案应该是寻找解决方案的终点(而不是另一个参考中途停留,随着时间的推移往往会变得陈旧)。请考虑在此处添加独立的概要,并保留链接作为参考。
    猜你喜欢
    • 1970-01-01
    • 2013-04-06
    • 1970-01-01
    • 2013-05-11
    • 2012-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多