2012-03-21 8 views
1

テーブルが非常に大きく、さまざまなビジネスタイプに関する契約情報を格納するために使用します。Java ORM、Java Beanをビューにマップすることができます

は実際のビジネスタイプによって異なりますが、そのテーブルの異なる列が使用されます。

私たちはさまざまな業種でそのテーブルの上にビューを作成した場合、これらのビューは、任意のJava ORMフレームワーク

で使用することができますか?

答えて

0

私はそう信じています。 ViewはDBレベルの抽象化であり、ユーザーは通常のテーブルとまったく同じようにクエリを実行できます。 ORMフレームワークはまさに​​DBの視点から見た別のユーザーなので、このアプローチはうまくいくはずです。

しかし、私は個人的にはこれが最善の解決策ではないと思います。私は、DBはそれが何をすべきかを行うべきだと考えています。正規化されたデータをテーブルに格納します。 DBからのデータのフィルタリングを含むすべてのロジックの責任を負うビジネス層(この場合はJavaで書かれています)。これは、あなたが言及したビューは、おそらくビジネス層で "実装"されるべきであるということを意味します。たとえば、WHERE句にいくつかの追加条件を追加するアスペクトでDAOをラップすることができるため、Javaで実装された「ビュー」の効果が得られます。これにより、柔軟性などの多くの利点が得られます。

0

JPAを使用し、ビューを共通の親の子クラスとしてマップします。これにより、親に共通のプロパティーセットを維持しながら、特定の子クラスごとに有効なプロパティーだけをマップすることができます。

HERESに簡単な例:あなたがマッピングされたORMクラスに対して有効であるフィールドを区別するために使用される「タイプ」列と共通のテーブルを持っている上記の例で

@Entity 
@Table("myTable") 
@Inheritance(strategy = InheritanceType.SINGLE_TABLE) 
@DiscriminatorColumn(name = "type", discriminatorType=DiscriminatorType.STRING) 
public class Common { 
    // Common fields, including ID 
} 


@Entity 
@DiscriminatorValue("special1") 
public class Specialized1 extends Common { 
    // Specialized fields here 
} 

インターネットにはかなりのチュートリアルがあります。 Hereのいずれかです。

0

ORM層は、本質的にちょうどSQLを生成しますので、私は、すべてのSQLがVIEWではなくTABLEに適用することができればVIEWを使用するとうまくいくと思います。 UPDATEINSERT10のみが問題を抱えている可能性があります。ビューを更新することができればOKです。これが可能かどうかは、VIEWとRDBMSによって異なります。

0

ActiveJDBCは、ビューが通常の表であるかのように動作します。 http://javalite.ioにチェックしてください。

関連する問題