Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate-枚举与Int_Java_Oracle_Hibernate - Fatal编程技术网

Java Hibernate-枚举与Int

Java Hibernate-枚举与Int,java,oracle,hibernate,Java,Oracle,Hibernate,关于性能的问题,最终将导致如何设置表结构 我有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

关于性能的问题,最终将导致如何设置表结构

我有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_类型变为varchars,并利用Hibernate的@Enumerated属性?或者是否有一种方法可以将值映射回并显示给用户。原因是我希望最终查询这些项目类型&使用int搜索应该比使用varchar更快。

使用
@Enumerated(EnumType.ORDINAL)
,您的实体中的enum将映射为数据库表中的序号int值。如果我没有弄错的话,这是枚举的默认映射,因此您甚至可以删除
@Enumerated
注释,Hibernate将自动将枚举持久化为int


PS:您还应该遵守Java命名约定:
item_type
应该是
itemType
,而
getItem_type()
应该是
getItemType()

命名约定的约定。我不是复制/粘贴-只是写一些psuedo代码并尽快将其取出。值得注意的是:
EnumType.STRING
允许您在不考虑顺序的情况下向Enum添加选项,建议
ORDINAL
要求我们从不移动项目。