2

我有一个组织如下的 Eclipse 项目:

MyProj/
    src/
        main/
            java/
                <All main Java source here>
            config/
                spring/
                    spring-config.xml
                views/
                    <All JSPs here>
                h2/
                    my-h2-db
        test/
            java/
            config/   } etc. for test sources

当我将它捆绑到 WAR 中时,它的打包方式如下:

MyProj.war
    META-INF/
    WEB-INF/
        web.xml
        lib/
        classes/
            spring-config.xml
            my-h2-db
            views/
                Home.jsp
                About.jsp
                etc.
            com/ --> root dir for all compiled Java binaries

我需要编写能够对 H2 数据库(以及随之而来的所有表、用户等)进行 CRUD 的代码,在这个示例中我调用了my-h2-db. 这样,无论我是从 Eclipse 内部进行测试,还是实际使用已部署的 WAR,应用程序都可以使用相同的数据库文件。

所以我问:

  • 我如何my-h2-db从 Eclipse 和运行时 (WAR) 类路径访问该文件,因为它被打包在与 Eclipse 项目中不同的位置?和
4

1 回答 1

3

我认为您不会希望将 H2 文件打包到您的 WAR 应用程序中。它不能在 WAR 中使用它们。

您在版本控制中需要的是用于构建数据库实体的 DDL(并在必要时预填充)。然后,在您的开发或生产环境中,您可以使用这些脚本来创建/更新数据库。

您在 Web 应用程序中拥有的只是用于定位嵌入式数据库的 JDBC url(指定数据库的文件位置)。正如您所建议的,这将根据开发或生产环境而有所不同。

我一直在使用 LiquiBase 作为管理数据库创建/升级的一种方式,它非常易于使用。

但是,在开发过程中创建数据库然后将这些文件嵌入到 WAR 中以便直接使用它们的想法是行不通的。没有保存这些文件的概念,因此没有任何数据会保留。

于 2013-03-26T03:01:43.100 回答