用C/S结构做一个项目,为了减少对数据库的访问次数,需要启动项目时把数据存起来放到内存里,供以后使用,请问放到内存里的方式有哪些? 这个功能就类似WEB工程里的session 谢谢啊j2se session 内存 c/s j2se内存sessionc/s

解决方案 »

  1.   

    放到一个map里,登陆成功则用你的方式计算出一个sessionid然后在map里建一个新键不就行啦
      

  2.   

    看实际情况吧,不需要线程安全的就用普通的集合类保存。
    需要线程安全的就用concurrent包下的线程安全的集合来保存。
      

  3.   

    定义一个单实例类,在类中定义一些静态的Hashtable对象,在应用启动时,把数据库内容加载到Hashtable对象中。以后使用时就只需访问Hashtable对象,不用再访问数据库。
      

  4.   

    jdbc提供的ResultSet本身就是存储查询结果的内存对象,另外,如果数据量小且是只读的话把数据放在内存里缓存是没问题的,但如果涉及到修改数据,就会出现内存中的数据和数据库中数据不一致的情况
      

  5.   

    或者用缓存都行,hashmap存放键值对
      

  6.   


    放到map里。。 这个map需要是静态的? 
      

  7.   

    还可以使用内存数据库例如Sqlite
      

  8.   


    不一定,如果比如说你用Application这个类在你的程序里只有一个实例,那就不需要是静态的,但如果你用比如说User这个类在你的程序里不是单例,那就要静态的,需要看情况
      

  9.   

    public static final Map<String, Object> cache = Collections.synchronizedMap(new HashMap<String, Object>());我决定用这个了。。 
      

  10.   


    了解一下ConcurrentHashMap,你会发现这个在线程安全方面比你那个靠谱。
    如果你不需要线程安全,直接用HashMap就好了。
      

  11.   

    分布式javaweb有专门的session服务器
      

  12.   

    首先你要决定是在服务器端还是客户端或者二者使用缓存, 然后可以考虑Cache方案,比放在内存中要好, 当数据量大时,缓存会自动保存到硬盘上去。 当然,要根据你的数据量大小, 访问要求再做决定, 没有最好的, 只有最适合的。
      

  13.   

    简单的用Map
    复杂的用缓存机制。