2016-12-30 124 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); 
    }