0

私はレガシーデータベースを持っていますが、そのデザインは変更できません。JPA 2.0(Hibernate)を使用してDAOレイヤーにアクセスするためにDAOレイヤーを実装しようとしています。しかし、レイアウトがひどいので、私は問題にぶつかっています。Spring-JDBCベースのソリューションに切り替えることはできますが、まだ元のアイデアをあきらめたくありません。

これが私が今苦労している問題です:

表A:

 Id    Number  SomeProperty
---  --------  ------------
 1        100             X
 2        200             Y
 3        999             Z
...

表B:

Id     A1    A2    A3    A4    A5    A6
---  ----  ----  ----  ----  ----  ----
 1    100   200   
 2    200
 3    999     
 4    100   200   999
...

したがって、各Bには、番号で参照される最大6つのAを含めることができます。このレイアウトを次のようなモデルにマッピングしたいと思います。

@Entity
class A {
    String someProperty;
}

@Entity
Class B {
    List<A> listOfAs; // 
}

Bをクエリすると、サンプルデータを使用すると、Bのインスタンスが4つになります。

  • 最初の2つのA(100と200)のリストが含まれています。
  • 1つのAのリストを含む2番目(200)
  • 1つのA(999)などのリストを含む3番目。

これを行うための良い方法はありますか?クラスBにA1a1、A2 a2、A3a3などを含めることは絶対に避けたいと思います。

このようなレガシーDBを使用する場合は、JPAを忘れた方がよいと思いますか?どんな提案でも大歓迎です。ありがとう!

4

1 に答える 1

1

これらのテーブルの上に、データモデルの問題を修正するビューを作成します。次に、改善されたモデルを使用して、からJPAエンティティを構築できます。

于 2012-11-29T18:55:09.947 に答える