首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

大家的web项目里这种情况都是怎么办的

2012-04-08 
大家的web项目里这种情况都是怎么处理的有时候仅仅为了得到外键所在表的名称字段而进行级联查询,这么做好

大家的web项目里这种情况都是怎么处理的
有时候仅仅为了得到外键所在表的名称字段而进行级联查询,这么做好像不是很妥当。
我不知道你们的项目中是怎么处理的,我现在的项目里是在服务器启动的时候集中访问数据库,建立好各种key为ID,value为NAME的static Map变量。
然后在这种查询的时候只管查询主表就好了,返回页面的时候用自定义的EL表达式(传ID作为参数)从Map中取得NAME输出。

大概如下:

Java code
//组织类型ID:组织类型名称    public static Map<Long, String> ORGTYPEID_ORGTYPENAME_MAP = new HashMap<Long, String>();    /**     * 服务器启动5秒后执行     * @author ztx 2010-08-04     */    public void runBySeverStart(){                log.info("--------------Start:runByServerStart()-----------------");        commonService.initOrgType();        ...        log.info("--------------End  :runByServerStart()-------------------");            }    public static String getOrgTypeNameByID(Long orgTypeID) {        if (EcardParameters.ORGTYPEID_ORGTYPENAME_MAP.containsKey(orgTypeID)) {            return EcardParameters.ORGTYPEID_ORGTYPENAME_MAP.get(orgTypeID);        } else {            return "";        }    }            <function>        <description>根据组织类型ID获取组织类型名称</description>        <name>getOrgTypeNameByID</name>        <function-class>com.htdz.eCard.common.util.ParameterUtil</function-class>        <function-signature>java.lang.String getOrgTypeNameByID(java.lang.Long)</function-signature>    </function>    ${fun:getOrgTypeNameByID(orgTypeID)}


对于数据量上限不会太大的表,这种形式还可以。但如果碰到消费表等大数据量的表的情况,如果也用这方式,似乎这些Map就很耗费堆的空间了,甚至导致内存溢出。那用什么形式来处理呢?

[解决办法]
看lz是想做缓存吧,大表一般不在应用层做缓存,原因是很多数据没及时用上的,反而占了内存空间,大表用临时表,分区,索引来解决

热点排行