我有一個名爲UserRole的在我的關係數據庫模式的查找表,其中有如下表列:JPA - 從數據庫查找表中加載靜態數據的最佳實踐方法是什麼?
Role_Id | Role_Name | Role_Desc | (some other foreign key ids linking to other tables) |
-------------------------------------------------------------------------------
1 | Admin | Admin user| ...... |
在上表中的所有行是靜態數據(他們從來沒有在我的應用改變)
目前我有一個實體持久對象:
@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類,它只是提取數據:for eg
entityManager.find(...).getResultsList()
等等
..................................... ...........................
每當我需要使用這些角色時,我都會直接調用數據庫。我覺得沒有必要這樣做,因爲數據在我的情況下永遠不會改變。我想將數據存儲在Enum中,而不是將數據存儲在數據庫中,但數據已經是遺留系統的一部分,並且我無法更改數據庫設計,並且該表已經有很多鏈接指向其他表。
我想只在啓動時加載它們一次。
這樣做的最好方法是什麼?
它是否就像是一個單例類來維護所有角色的(靜態?)列表,並且在初始化之後,使用Repository類調用Database來將數據提取到內存中的列表中。 ?
爲什麼人們認爲有一種神奇的「正確」*方式*和其他所有方式*在某種程度上是錯誤的。決定什麼對你有用,並繼續前進吧 –
啊我的道歉,我對這個問題的措辭可能不是那麼好。我打算問一下,如果有這樣的做法,什麼是「最佳做法」? – SoftwareDeveloper
JPA和Java EE中沒有任何模式可以最好地實現它。我建議儘可能使用最簡單的解決方案 - 在編寫和創建單例bean(例如'@ ApplicationScoped')時,可以存儲查詢結果。 – OndrejM