Java Hibernate-枚举与Int
关于性能的问题,最终将导致如何设置表结构 我有A、B、C和D表 表B、C和D映射到枚举,我所做的只是将序号值映射到枚举值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
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
要求我们从不移动项目。