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应该是itemTypegetItem_type()应该是getItemType()

于 2013-01-30T15:12:03.133 回答