0

最終的にテーブル構造の設定方法につながるパフォーマンスに関する質問。

テーブルA、B、C、Dがあります。

テーブル B、C、および D は、序数の値を列挙値にマッピングするだけの列挙にマッピングされます。

Table B:
ID: 1  String: ENUM_STR_VALUE
ID: 2  String: ENUM_STR_VALUE

テーブル A には次のスキーマがあります

Name           Null       Type
------------------------------
ID         Not Null   Number(32)
Timestamp  Not Null   Date
Item_Type  Not Null   Number (32)
Item2_Type Not Null   Number (32)
Item3_Type Not Null   Number (32)

テーブル A...Item_Type では、Item2_Type および Item3_Type は、それぞれテーブル B、C、および D の序数値です。

私の問題は、ユーザーに物事を表示する方法に帰着します。

私の A.java には、次のコードがあります。

@Entity
@Table(name = "a")
public classs A{
  private int item_type;
  private int item2_type;
  private int item3_type;


  @Column(name="Item_type")
  public nit getItem_type(){
      return item_type; 
  }

この正規化を捨てて、item_types varchars を作成し、Hibernate の @Enumerated プロパティを活用する必要がありますか? または、値をユーザーにマップして表示する方法はありますか。その理由は、最終的にこれらの項目タイプを照会したいためであり、int による検索は varchar よりも高速である必要があります。

4

1 に答える 1

2

を使用する@Enumerated(EnumType.ORDINAL)と、エンティティに列挙型が含まれ、データベース テーブルの序数の int 値としてマップされます。私が間違っていなければ、これが列挙型のデフォルトのマッピングであるため、@Enumerated注釈を削除することもできます。Hibernate は列挙型を int として自動的に保持します。

PS: Java の命名規則も尊重するitem_type必要がitemTypeありgetItem_type()ますgetItemType()

于 2013-01-30T15:12:03.133 に答える