我的关系数据库模式中有一个名为UserRole的查找表,其中包含以下表格列:
Role_Id | Role_Name | Role_Desc | (some other foreign key ids linking to other tables) |
-------------------------------------------------------------------------------
1 | Admin | Admin user| ...... |
上表中的所有行都是静态数据(它们在我的应用程序中永远不会改变)
目前我有一个Entity持久对象:
@Entity
@Table(name = "UserRole")
public class RoleEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "Role_Id")
private int id;
@Column(name = "Role_Name")
private String role_name;
@Column(name = "Role_Desc")
private String role_desc;
....
// other code omitted for brevity
}
我有一个等效的Repository类,它只获取数据:例如
entityManager.find(...).getResultsList()
等......
............................................... .................
每当我需要使用这些角色时,我都会直接调用数据库。我觉得没有必要这样做,因为在我的情况下数据永远不会改变。我想过将数据存储在Enum中而不是在数据库中存储数据,但数据已经是遗留系统的一部分,我无法更改数据库设计,而且该表已经有许多链接到其他表。
我想在启动时只加载一次。
这样做的最佳方式是什么?
它是否只是像一个单独的类来维护所有角色的(静态?)列表,并且在初始化之后,使用Repository类来调用Database以将数据提取到内存中的列表中。
答案 0 :(得分:0)
对于这个特殊问题有效的是OndrejM所建议的。它就像创建一个单独的bean并在启动时存储我的查询结果一样简单。当然,没有模式或官方方式来做到这一点。这就是答案。