JAVA項目字典與緩存搭配使用方法解析
字典數(shù)據(jù)是什么?
這里說了字典不是軟件工程中說的數(shù)據(jù)字典。
字典數(shù)據(jù):用于動態(tài)設(shè)置某對象的屬性是屬于在一個可列舉的數(shù)據(jù)范圍內(nèi)的某一類型數(shù)據(jù),使用字典類型作為該類別屬性的唯一標(biāo)識
如:用戶類型:學(xué)生,老師,家長,校長等
有什么作用?
字典數(shù)據(jù)由兩個表組成:字典類型表 dict_type,字典類型數(shù)據(jù)表 dict_data
這個數(shù)據(jù)相當(dāng)于java中的枚舉類,可以被使用于前端的數(shù)據(jù)展示,下拉框數(shù)據(jù)集使用。
沒有數(shù)據(jù)字典時業(yè)務(wù)操作方法:
定義學(xué)生枚舉類,在代碼中使用枚舉類的key進(jìn)行數(shù)據(jù)保存,在查詢數(shù)據(jù)后,轉(zhuǎn)換key對應(yīng)的中文名稱label標(biāo)簽返回給前端。
缺點:如新增用戶類型,修改學(xué)生類型對應(yīng)中文名稱時,需要修改代碼。
使用字典時業(yè)務(wù)操作方法。
后端業(yè)務(wù)數(shù)據(jù)存儲的是字典類型的key值,即label標(biāo)簽表示學(xué)生類型對應(yīng)的key值 student,
新增數(shù)據(jù)時前端通過下拉菜單獲取學(xué)生類型某一個類型key進(jìn)行新增,查詢數(shù)據(jù)時根據(jù)字典數(shù)據(jù)表的用戶類型作為下拉框查詢條件選擇。
優(yōu)點:當(dāng)key為student的數(shù)據(jù)中文名稱發(fā)生改變時,不需要后端進(jìn)行代碼修改。
如新增用戶時,設(shè)置用戶的類型,下拉框的數(shù)據(jù)可以從數(shù)據(jù)庫獲取數(shù)據(jù),不用前端關(guān)心數(shù)據(jù)集的內(nèi)容,
在業(yè)務(wù)中使用
不使用緩存的方式使用字典數(shù)據(jù):
業(yè)務(wù)中使用方式,返回用戶列表數(shù)據(jù),將用戶類型的字典數(shù)據(jù)從數(shù)據(jù)庫中查詢出來,然后進(jìn)行轉(zhuǎn)換。
在前端查詢數(shù)據(jù)時,前端查詢用戶類型的下拉數(shù)據(jù)集,作為條件,傳類型key值作為查詢條件查詢數(shù)據(jù)。
與緩存搭配使用字典數(shù)據(jù)。
自己控制數(shù)據(jù)緩存。靈活性高:Ehcache,Redis等內(nèi)存緩存框架進(jìn)行處理。
如果是單機(jī)項目。可以使用內(nèi)存緩存。
緩存的使用方式有多種:
如使用Mybatis自帶的一級緩存,二級緩存。但如果使用的是不同的SqlSession進(jìn)行數(shù)據(jù)查詢,這不會用到一級緩存。
單機(jī)項目最好還是使用內(nèi)存緩存框架,如Ehcache,用Map來存儲所有字典數(shù)據(jù)。在更新字典數(shù)據(jù)后,直接整個更新緩存數(shù)據(jù)。
{ '字典類型': [ { 'key': 'label' } ]}
如果是分布式(雖然沒實際用過):可以使用redis這種外置的非關(guān)系型數(shù)據(jù)庫存儲緩存數(shù)據(jù)。即一個類型一個key來存儲數(shù)據(jù)。如
RedisUtils.put( 'dict:type_user_type' ) RedisUtils.get( 'dict:type_user_type' )
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
