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を使用している場合でも、アプリは同じDBファイルで動作できます。

だから私は尋ねます:

  • my-h2-dbファイルはEclipseプロジェクト内の場所とは異なる場所にパッケージ化されているため、Eclipseとランタイム(WAR)クラスパスの両方からファイルにアクセスするにはどうすればよいですか?; と
4

1 に答える 1

3

WARアプリケーション内にH2ファイルをパッケージ化する必要はないと思います。WARで使用することはできません。

バージョン管理に必要なのは、データベースエンティティの構築に使用されるDDLです(必要に応じて事前入力します)。次に、開発環境または実稼働環境のいずれかで、これらのスクリプトを使用してデータベースを作成/更新します。

Webアプリケーションにあるのは、組み込みデータベースを見つけるために使用されるJDBC URL(データベースのファイルの場所を指定する)です。ご提案のとおり、これは開発環境または本番環境によって異なります。

私はデータベースの作成/アップグレードを管理する方法としてLiquiBaseを使用してきましたが、それは非常に使いやすいです。

ただし、開発の一環としてデータベースを作成し、それらのファイルを直接使用するためにそれらのファイルをWAR内に埋め込むというアイデアは機能しません。これらのファイルを保存するという概念はないため、データは保持されません。

于 2013-03-26T03:01:43.100 に答える