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