JPA - 从数据库查找表加载静态数据的最佳实践方法是什么?

时间:2015-10-13 10:30:50

标签: java database jpa

我的关系数据库模式中有一个名为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以将数据提取到内存中的列表中。

1 个答案:

答案 0 :(得分:0)

对于这个特殊问题有效的是OndrejM所建议的。它就像创建一个单独的bean并在启动时存储我的查询结果一样简单。当然,没有模式或官方方式来做到这一点。这就是答案。