JAVA專案字典與快取搭配使用方法解析
字典資料是什麼?
這裡說了字典不是軟體工程中說的資料字典。
字典資料:用於動態設定某物件的屬性是屬於在一個可列舉的資料範圍內的某一型別資料,使用字典型別作為該類別屬性的唯一標識
如:使用者型別:學生,老師,家長,校長等
有什麼作用?
字典資料由兩個表組成:字典型別表 dict_type,字典型別資料表 dict_data
這個資料相當於java中的列舉類,可以被使用於前端的資料展示,下拉框資料集使用。
沒有資料字典時業務操作方法:
定義學生列舉類,在程式碼中使用列舉類的key進行資料儲存,在查詢資料後,轉換key對應的中文名稱label標籤返回給前端。
缺點:如新增使用者型別,修改學生型別對應中文名稱時,需要修改程式碼。
使用字典時業務操作方法。
後端業務資料儲存的是字典型別的key值,即label標籤表示學生型別對應的key值 student,
新增資料時前端通過下拉選單獲取學生型別某一個型別key進行新增,查詢資料時根據字典資料表的使用者型別作為下拉框查詢條件選擇。
優點:當key為student的資料中文名稱發生改變時,不需要後端進行程式碼修改。
如新增使用者時,設定使用者的型別,下拉框的資料可以從資料庫獲取資料,不用前端關心資料集的內容,
在業務中使用
不使用快取的方式使用字典資料:
業務中使用方式,返回使用者列表資料,將使用者型別的字典資料從資料庫中查詢出來,然後進行轉換。
在前端查詢資料時,前端查詢使用者型別的下拉資料集,作為條件,傳型別key值作為查詢條件查詢資料。
與快取搭配使用字典資料。
自己控制資料快取。靈活性高:Ehcache,Redis等記憶體快取框架進行處理。
如果是單機專案。可以使用記憶體快取。
快取的使用方式有多種:
如使用Mybatis自帶的一級快取,二級快取。但如果使用的是不同的SqlSession進行資料查詢,這不會用到一級快取。
單機專案最好還是使用記憶體快取框架,如Ehcache,用Map來儲存所有字典資料。在更新字典資料後,直接整個更新快取資料。
{ "字典型別": [ { "key": "label" } ] }
如果是分散式(雖然沒實際用過):可以使用redis這種外接的非關係型資料庫儲存快取資料。即一個型別一個key來儲存資料。如
RedisUtils.put( "dict:type_user_type" ) RedisUtils.get( "dict:type_user_type" )
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。