【发布时间】:2017-11-21 03:13:55
【问题描述】:
我使用的是 spring 4,我为缓存创建了以下类以避免连接
package com.pu.services;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
@Component
@Scope(BeanDefinition.SCOPE_SINGLETON)
public class CacheSRV {
private Map<Long, String> countriesMap = new ConcurrentHashMap<Long, String>();
private Map<Long, String> provinceMap = new ConcurrentHashMap<Long, String>();
private Map<Long, String> divisionMap = new ConcurrentHashMap<Long, String>();
private Map<Long, String> districtMap = new ConcurrentHashMap<Long, String>();
private Map<Long, String> cityMap = new ConcurrentHashMap<Long, String>();
private Map<Long, String> zoneMap = new ConcurrentHashMap<Long, String>();
public Map<Long, String> getCountriesMap() {
return countriesMap;
}
public void setCountriesMap(Map<Long, String> countriesMap) {
this.countriesMap = countriesMap;
}
public Map<Long, String> getProvinceMap() {
return provinceMap;
}
public void setProvinceMap(Map<Long, String> provinceMap) {
this.provinceMap = provinceMap;
}
public Map<Long, String> getDivisionMap() {
return divisionMap;
}
public void setDivisionMap(Map<Long, String> divisionMap) {
this.divisionMap = divisionMap;
}
public Map<Long, String> getDistrictMap() {
return districtMap;
}
public void setDistrictMap(Map<Long, String> districtMap) {
this.districtMap = districtMap;
}
public Map<Long, String> getCityMap() {
return cityMap;
}
public void setCityMap(Map<Long, String> cityMap) {
this.cityMap = cityMap;
}
public Map<Long, String> getZoneMap() {
return zoneMap;
}
public void setZoneMap(Map<Long, String> zoneMap) {
this.zoneMap = zoneMap;
}
}
当我得到值时,它会遍历所有地图以找出值。 假设我得到一个 Student 列表,student 的列表大小是 100,世界上有 195 个国家。所以,它的意思是每次迭代,我需要迭代 195 个国家来找出属于学生的国家。那是性能开销吗?如果是,如何克服?
或者我最好使用join
Select * from Student ST
INNER JOIN COUNTRY C ON C.countryid = st.countryid
INNER JOIN Province P ON P.provinceid = st.provinceid
INNER JOIN Division D ON D.divisionid = st.divisionid
INNER JOIN District DS ON DS.districtid = st.districtid
INNER JOIN City CT ON CT.cityid = st.cityid
INNER JOIN Zone ZE ON ZE.zoneid = st.zoneid
【问题讨论】:
标签: java spring performance caching join