2012-05-09 9 views
0

私のDBには、「a_emp_transactions」、「b_emp_transaction」のような名前のテーブルが約20以上あり、テーブル構造はすべて同じです。基本的に、これらのテーブルは従業員の名前に基づいて分割されます。アノテーションを使用して休止状態でテーブルにPOJOを動的にマッピング

これで、hibernateを使用してこれらのテーブルに対してCURD操作を実行したいと思いますが、それぞれのテーブルごとにPOJOを作成する必要はありません。テーブルの名前だけが異なり、構造が同じであるため、単一のPOJOを使用してPOJOを注釈を使用して現在の従業員名に基づいてテーブルに動的にマッピングする方法はありますか?

+2

アノテーションは、コンパイル時に固定されていても、動的に近いものです。 – DataNucleus

+2

彼が再利用できるかどうかは、異なるデータベーステーブルのアノテーションマップされたPOJOです。 「動的に」とは、動的注釈ではなく、正しい表を見つけるプロセスを指します。 – Matt

答えて

1

DBアーキテクチャに大きな欠陥があると思います。 同じフィールド+「EmployeeName/ID」フィールドでONEを使用する場合、20+テーブルを使用する理由は何ですか?

このようにすれば、POJOを単一のテーブルにマップすることができ、IMHOははるかに一貫したアーキテクチャになります。

+1

各従業員には1週間に数百件の取引があり、1000人以上の従業員がいます。したがって、DB操作を高速化するためには、アーキテクチャーがそうでした。いずれにしても、それを変更する機会はありません。 – Pawan

0

これを達成するためにHibernate Shardsを使用することができます。基本的に、Hibernate Shardsでは "シャーディング"戦略を指定できます。これは、異なるデータベースサーバー間でデータを配信することも、別々のテーブルからデータを配信することもできます(あなたのケースだと思われます)。私は既存の例を考えていないとしてあなたは確かに、あなた自身の戦略を作成することになるでしょう完璧に:-)あなたのケースをカバーします

http://docs.jboss.org/hibernate/stable/shards/reference/en/html/shards-shardstrategy.html

ところで:休止状態シャードどうかはわかりませんマッピングされたエンティティのテーブル名を変更することができます(おそらくそれは可能ですが、わかりません)。いずれにしても、不可能な場合は、異なるHibernate Naming Strategiesを作成し、それぞれの命名法を異なる命名方法で使用できます。

関連する問題