Java API の開発プロセスでは、データベースへの接続が一般的な要件になります。 DriverManager を使用して毎回データベース接続を取得するとオーバーヘッドが高くなるため、接続プーリング技術を使用する必要があります。 Druid は監視、統計、拡張などの強力な機能を備えた高性能な JDBC 接続プールであり、この記事では Java API の開発における Druid の使用方法を紹介します。
1. Druid の概要
Druid は、Alibaba が開発したデータベース接続プールであり、優れたパフォーマンス、豊富な機能、簡単な操作性が特徴です。 Druid 接続プールの利点は次のとおりです。
2. 接続プール管理に Druid を使用する
Java アプリケーションでの接続プール管理に Druid を使用する方法を見てみましょう。
<!-- druid --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.10</version> </dependency>
//创建 Properties 对象用于存储配置信息 Properties props = new Properties(); //设置连接池基本属性 props.put("driverClassName", "com.mysql.jdbc.Driver"); props.put("url", "jdbc:mysql://localhost:3306/test"); props.put("username", "root"); props.put("password", "root"); //连接属性配置 props.put("initialSize", "5"); props.put("minIdle", "5"); props.put("maxActive", "20"); props.put("maxWait", "60000"); props.put("timeBetweenEvictionRunsMillis", "60000"); props.put("minEvictableIdleTimeMillis", "300000"); props.put("validationQuery", "SELECT 'x'"); props.put("testWhileIdle", "true"); props.put("testOnBorrow", "false"); props.put("testOnReturn", "false"); props.put("poolPreparedStatements", "true"); props.put("maxOpenPreparedStatements", "20"); props.put("filters", "stat,wall,log4j"); //创建 DruidDataSource 实例 DruidDataSource dataSource = new DruidDataSource(); dataSource.configFromPropety(props);
上記のコードでは、データベース接続 URL、ユーザー名、パスワードに加え、初期接続数、最大接続数、その他の構成情報を設定します。このうち、各設定の意味は以下のとおりです。
minEvictableIdleTimeMillis: プール内の接続の最小生存時間。単位はミリ秒です。
validationQuery’は接続が有効かどうかを確認するために使用され、要件はクエリ文です(文の実行結果は関係ありません)。
-testwhileIdle: 接続申請時にテストされ、アイドル時間が timeBetweenEvictionRunsMillis より大きい場合は、validationQuery を実行して接続が有効かどうかを確認します。
-testOnBorrow: 接続申請時に validationQuery を実行して接続が有効かどうかを確認するため、パフォーマンスが低下します。
-testOnReturn: 接続を返すときに、validationQuery を実行して接続が有効かどうかを確認します。この設定を行うとパフォーマンスが低下し、接続プールに判定が追加されます。
-poolPreparedStatements: prepareStatement をキャッシュするかどうか、つまり、 PSキャッシュ。 PSCache は、Oracle などのカーソルをサポートするデータベースのパフォーマンスを大幅に向上させます。 mysql の下で閉じることをお勧めします。
-maxOpenPreparedStatements: poolPreparedStatements をオンにした後、各接続でキャッシュされたステートメントの数を指定する必要があります
-filters: 属性のタイプは文字列で、拡張プラグインはエイリアスを通じて設定されます。プラグインは次のとおりです。
监控统计用的filter:stat 日志用的filter:log4j 防御SQL注入的filter:wall
Connection conn = dataSource.getConnection();
// 创建 Druid 连接池 DruidDataSource dataSource = new DruidDataSource(); //... 配置数据库连接池信息 // 配置监控统计 // 设置监控统计用的 Filter,用于统计监控信息 WallFilter wallFilter = new WallFilter(); wallFilter.setDbType("mysql"); StatFilter statFilter = new StatFilter(); statFilter.setSlowSqlMillis(1000); statFilter.setLogSlowSql(true); // 设置 Druid 连接池的 Filters dataSource.setProxyFilters(Arrays.asList(wallFilter, statFilter)); // 打印 SQL 执行日志 Log4jFilter logFilter = new Log4jFilter(); logFilter.setStatementExecutableSqlLogEnable(true); dataSource.setProxyFilters(Collections.singletonList(logFilter));
特定の実装プロセス中に、必要に応じて監視統計またはログ機能の使用を選択できます。
3. 結論
この記事では、Java API の開発における接続プール管理に Druid を使用する方法を紹介します。 Druid を使用することで、アプリケーションのパフォーマンスを向上させるだけでなく、統計情報や SQL 実行ログの監視などの機能を通じて、アプリケーションの動作をより包括的に理解することができます。
以上がJava API開発におけるデータベース接続プール管理にDuridを使用するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。