1

ORM フレームワークを使用してエンティティをデータベースにマッピングし、明らかにオブジェクトのシリアル化を容易にする Java Web アプリケーションが常に増えています。

これは見栄えがよく、通常は次のような多くのコードが含まれます。

@Entity
@Table(name="Flight")
public class Flight implements Serializable {
    Long id;

    @Id
    public Long getId() { return id; }

    public void setId(Long id) { this.id = id; }
}  

上記は、Flight POJO を Flight という名前のデータベース テーブルにマップします。これは、ゼロから設計された新しいアプリケーションにとって非常に合理的です。

しかし、従来のテーブルとロジックを使用してアプリケーションを開発する必要がある場合、JPA のような ORM ソリューションを使用することは実行可能なソリューションでしょうか?

つまり、ORM テーブルとレガシー テーブルを一緒に使用することは可能ですか? 従来のテーブルを POJO にマップするにはどうすればよいですか?

従来のテーブルから jpa2 エンティティへの変換、データベースからオブジェクト @entities を生成するなどの同様の質問を見てきましたが、それらはすべて、テーブルをオブジェクトに「リバース エンジニアリング」するためのツールについて語っています。手動で行うオプションがあり、正しくマッピングされたら、ORM フレームワークにそれらを管理させるべきではありませんか? 私が求めていることはすべてハックのように思えますが、レガシーデータベースをORM管理データベースに変換することが私の意見ではルールであるべきです。

ありがとうございました

4

3 に答える 3

0

はい、既存のデータベースに ORM を使用できます。最近の JPA がどれほど柔軟かはわかりませんが (すべての仕様変更に対応していません)、Hibernate がオブジェクトを既存のテーブルに一致させることに関して非常に柔軟であることは知っています (さまざまなレガシー構成をサポートしています)。 )。ORM とストレート JDBC を並べて使用することを妨げるものは何もありません (両方のチャネルを介して更新を管理している場合、同期の問題が発生する可能性があります)。実際、いくつかのシナリオでは、ストレート JDBC が理にかなっている場合があります (アドホック レポートなど)。繰り返しますが、すべての JPA が提供するものはわかりませんが、休止状態のセッションを使用すると、基礎となる JDBC 接続にアクセスできるため、必要に応じてネイティブ SQL を実行できることはわかっています。

于 2013-05-24T18:27:23.893 に答える