1

Spring と JPA (Hibernate を使用) を使用するアプリケーションのテストをいくつか作成しようとしています。

メインの開発サーバー (Sybase の古いインストール) に依存せずにすべてが機能しているかどうかを確認できるように、メモリ内データベースを使用したいと考えています。また、テスト機能をより適切に分離することもできます。

@Table("dbname..dbo.someviewname")問題は、他のデータベースからビューにアクセスするために使用してマップされるテーブルがたくさんあることです。だから、私は DBunit で HSQLDB を使用しようとしていましたが、HSQLDB では当然のことながら、名前にドットを含むテーブルを作成することはできません。

それに対してテストを行うにはどうすればよいですか?

インメモリのことをあきらめて、メインの Sybase 開発サーバーを使用してテストを行う必要がありますか (他の開発者のためにそれを台無しにする危険があります:P)?

4

1 に答える 1

0

dbname.dbo.someviewnameHSQLDBからdbname、カタログ、dboスキーマ、およびsomewiewnameテーブル名として抽出される可能性があります。

HSQLDB では、名前にドットを含むテーブルを作成できます。これは、テーブル名を区切り識別子として扱うことで実行できます。

@Table(name="\"dbname.dbo.someviewname\"")

ただし、名前の処理方法が Sybase でも変更されるため、これを使用したくありません。テスト用に別の orm.xml を持つことができる場合は、orm.xml に以下を追加できます。

    <persistence-unit-defaults>
        <delimited-identifiers/>
    </persistence-unit-defaults>  

これにより、すべてのデータベース オブジェクト名が区切り識別子として扱われます。マッピングとクエリによっては、最終的には機能する可能性がありますが、おそらくいくつかの問題に直面するでしょう。おそらく最善の方法は、マッピングにスキーマ名を使用しないこと、および/またはテスト用に別の Sybase インスタンスを使用しないことです。

于 2012-08-27T17:37:24.527 に答える