我在一个service类中声明一个Map,方法里会向Map中put值。重启服务器后Map就被自动清空,或者说是被重新创建了!为什么不是每次访问到这个service时就重新创建呢?还有,有什么方法可以让这个Map一直保存不会被自动清空呢?PS:我用的是SSH框架

解决方案 »

  1.   

    你一个问题没看懂
    第二个问题,session是保存在内存中的,你服务都重启了,肯定要没了的。如果非要保存,那就把session的内容持久化吧,保存到数据库或者文件。
      

  2.   


    噢~我还想用Map来判断数据表里字段不能重复呢……  看来我SB了。难道每添加一条数据都要到数据表里去查询一遍,判断记录是否重复添加了吗?
      

  3.   

    服务器重启会把java的占用的内存都放掉要占map的值不变?
    直接来肯定不行的,要么放文件里,要么放数据库里~~~
      

  4.   

    map嘛 能操作的数据也就是系统产生的存在内存中的数据
       服务重启 jvm内存清空   一切对象全部为空   持久化??保存到数据库或是保存到文件就KO了
      

  5.   

    spring的配置模式人单例,当然不会每次都NEW而且你这个map是要跟SESSION的吧,怎么要放到SERVICE呢
      

  6.   


    其实我原来是想在向数据库插入一条数据的同时向Map里也添加一个值,来判断数据是否已经存在,不存在才可以插入,总之就是某字段不能重复的判断啦,既然Map不能一直保存,那就不能这么做了!
      

  7.   

    到数据库里查一遍当然是最好的做法。这样的结果才是最精确的。
    再说了,如果你的数据非常多,你觉得可能用一map把它都放内存里么。
      

  8.   


    既然是用SSH   你可以 看一下 关于  hib 的缓冲机制  能实现你这个需求  其实用map也可以实现 不过既然有 hib的缓冲 何必自己来写
      

  9.   


    既然是用SSH   你可以 看一下 关于  hib 的缓冲机制  能实现你这个需求  其实用map也可以实现 不过既然有 hib的缓冲 何必自己来写
      

  10.   

    再说了 往数据库insert  为什么要使用内存来判断是否存在呢?  主键是干什么的?
      

  11.   

    数据库里的数据是永久存储的;而Map里的是运行时数据,在内存里面:)
      

  12.   

    给相应的字段加unique约束啊
      

  13.   

    没理解错的话,难道是static的?
      

  14.   

    数据库异常都有个sqlcode和sqlstate的.凭这个码可以确定是哪类异常.
    比如主键冲突.不管是insert 还是 update都会有同一个sqlcode表示主键冲突
      

  15.   


    我用的是mysql哦,也可以吗? 我是想在java后台做异常的判断。 有相关的资料吗? 给个地址~
      

  16.   

    相关资料没有.直接java api里可以查找到相关信息.
    SQLException 所有操作数据库产生的异常都属于该类exception.如下
     int getErrorCode() 
              检索此 SQLException 对象的特定于供应商的异常代码。 
     SQLException getNextException() 
              检索到此 SQLException 对象的异常链接。 
     String getSQLState() 
              检索此 SQLException 对象的 SQLState。 
     void setNextException(SQLException ex) 
              将 SQLException 对象添加到链接的末尾。