2016-12-30 85 views
0

我缓存数据库连接对象像:缓存失效,同时通过WeakHashMap中从WeakHashMap中获取

Connection conn; 
    if (connectionCache.get(jdbc.getConnectionURL()) == null) { 
     conn = DriverManager.getConnection(jdbc.getConnectionURL(), jdbc.getUsername(), jdbc.getPassword()); 
     connectionCache.put(jdbc.getConnectionURL(), conn); 
    } else { 
     conn = connectionCache.get(jdbc.getConnectionURL()); 
    } 

是否有可能:

如果语句进行检查,看到已经存在于缓存和前一个对象运行else语句缓存失效?

回答

0

从技术上讲它是非常罕见的。这个解决方案很简单:

如果你想使用在if中选中的值,那不是null,你可以在if中指定它,所以你不需要再从缓存中检索它在else中:

Connection conn; 
    if ((conn = connectionCache.get(jdbc.getConnectionURL())) == null) { 
     conn = DriverManager.getConnection(jdbc.getConnectionURL(), jdbc.getUsername(), jdbc.getPassword()); 
     connectionCache.put(jdbc.getConnectionURL(), conn); 
    }