Druidデータベース接続プールの簡単な使用

2731 ワード

public class DruidPool {    
    private static DruidDataSource _dds = null;    
    private static class DruidPoolHolder {        
        public static DruidPool _databasePool = new DruidPool();
    }    
    
    static {        
        NormalSettingFactory factory = NormalSettingFactory.getInstance();        
        File file = new File("druidpool.properties");        
        NormalSetting normalSetting = factory.createSetting(file, Setting.PROPERTY);        
        Properties properties = normalSetting.getProperties();// 

        try {
            _dds = (DruidDataSource) DruidDataSourceFactory
                    .createDataSource(properties);            
            System.out.println("DruidPool Inited");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }    
    
    private DruidPool() {}  //singleton

    public void init() {        
        try {            
            DruidPooledConnection connection = this.getConnection();
            connection.recycle();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }    
    
    /**     
     *       
     * @return ConnectionPool       
     */
    public static DruidPool getInstance() {        
        return DruidPoolHolder._databasePool;
    }    
    
    /**     
     *       
     * @return DruidPooledConnection       
     * @throws SQLException SQL      
     */
    public DruidPooledConnection getConnection() throws SQLException {        
        return _dds.getConnection();
    }    
    
    /**     
     *       
     */
    public void close() {
        _dds.close();
    }
}

その中で自分のSettingManagerクラスを使っているので、このクラスのアドレスは私のGitHubにありますが、Javaが持っているPropertiesを使って構成することもできます.LazyLoadを使用しているため、ユーザーが最初に衝突して完了する必要がある場合は、次の呼び出し順序を考慮できます.
DruidPool druidPool = DruidPool.getInstance();
UUDIManager uudiManager = UUDIManager.getInstance();
MapperFactory mapperFactory = MapperFactory.getInstance();
Main_ServerSocket serverSocket = Main_ServerSocket.getInstance();
//----------------------------------------
// druidPool.init();uudiManager.init();mapperFactory.init();serverSocket.init();
//----------------------------------------
// LazyLoad, mapperFactory.autoInit();

次に、プロファイルの内容を示します.
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/test
username=root
password=delta-boyMIKE
filters=stat
initialSize=30
maxActive=5000
maxWait=60000
timeBetweenEvictionRunsMillis=60000
minEvictableIdleTimeMillis=300000
validationQuery=SELECT 1
testWhileIdle=truetestOnBorrow=falsetestOnReturn=falsepoolPreparedStatements=falsemaxPoolPreparedStatementPerConnectionSize=500