0

Hibernate を使用して、注釈を介して巨大なテーブルを含むレガシー スキーマにオブジェクトをマップしています (XML ファイルは 2003 年なので)。これらのクラスは非常に大きいので、時折タイプミスをすることがありますが、Hibernate は実行しようとするまでわざわざタイプミスを教えてくれません。

これが私が試したことです:

1: hbm2ddl.auto を「検証」に設定:

これにより、クラスの String 値が に対して検証されvarchar(255)ます。データベースの列タイプの多くは であるためCHAR(n)、これは爆発します。columnDefinition="CHAR(n)"数百のマッピングに追加する必要があります。

2: Unitils の使用。

これらを Maven 経由でインポートすると、コードの他のセクションを爆破する依存ライブラリのインポートが発生します。例: 私は Hibernate 4.1 を使用していますが、Unitils は Hibernate 3.2.5 をインポートし、UserType を爆破しました。

それで、これを行う別の方法はありますか?Unitils コードを調べて、必要なセクションを単純にヤンクできるかどうかを確認しました (1 つのメソッドだけが必要な場合は、apache-commons でかなり頻繁にヤンクを行います) が、それは簡単な作業ではありません。

Hibernate は、Spring アプリケーション コンテキストを介して構成されます。

そこに何かアイデアはありますか?

4

1 に答える 1

1

Spring テスト フレームワークを使用して、インメモリ データベース (HSQLDB、H2) に対するテストを作成します。テーブルに対してクエリを実行しようとすると、マッピング エラーがすぐに表示されます。

テストクラスは次のようになります。

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes=MyTestConfig.class)
@TransactionConfiguration(transactionManager="txMgr", defaultRollback=true)
public class MyTest {

    @Autowired
    private SessionFactory sessionFactory;

    // class body...
}

テストの一部としてテーブルを自動デプロイするように Hibernate を構成します。

于 2012-06-15T12:49:56.397 に答える