请教大家一个关于树形左面菜单实现问题。大家是使用启动时候servlet执行数据库查询  然后保存到hashmap里  每次用户登录直接从hashmap里读还是使用hibernate的缓存每次都是查询呢? 谢谢
如果是第一种大家的hashmap都存放哪里? application对象中吗?

解决方案 »

  1.   

    有权限的:
    启动单例模式,读一级菜单放在cache里面,也就是application级别的cache了。然后根据权限显示不同用户的菜单。二级菜单及子节点啥的都是实时根据权限查询的。有更新的时候直接把cache重新load一下。
    没有权限的菜单分两种情况来处理:
    1。数据量小,全部cache。
    2。数据量大,只cache第一级,其他的点哪个再去刷哪个。
    有更新的时候刷下cache。别人就不知道了。
      

  2.   

    后来管理登陆的action里读取管理权限菜单啊,你说的tomcat启动时候加载你也不知道登陆的用户是什么权限啊。另外取出来就放List就可以啊,用不着哈希啊。
      

  3.   

    一个关于树形左面菜单实现问题。 大家是使用启动时候servlet执行数据库查询  然后保存到hashmap里  每次用户登录直接从hashmap里读还是使用hibernate的缓存每次都是查询呢?
    为什么要存在hashmap中,
    树形左面菜单都是通过当前用户查询他的功能权限,然后传递xml个数据控件js,展现。不存在,保存在哪里,
    如果重新加载再重新查询呗,如果你吧用的菜单树都放在session中,那树的节点很多怎么办,直接就内存异常
    反问下,你要保存在session或application的用途是什么?