ホームページ  >  記事  >  Java  >  Java API開発におけるデータベース接続プール管理にDuridを使用する

Java API開発におけるデータベース接続プール管理にDuridを使用する

WBOY
WBOYオリジナル
2023-06-19 08:44:421788ブラウズ

Java API の開発プロセスでは、データベースへの接続が一般的な要件になります。 DriverManager を使用して毎回データベース接続を取得するとオーバーヘッドが高くなるため、接続プーリング技術を使用する必要があります。 Druid は監視、統計、拡張などの強力な機能を備えた高性能な JDBC 接続プールであり、この記事では Java API の開発における Druid の使用方法を紹介します。

1. Druid の概要
Druid は、Alibaba が開発したデータベース接続プールであり、優れたパフォーマンス、豊富な機能、簡単な操作性が特徴です。 Druid 接続プールの利点は次のとおりです。

  1. SQL リクエストに迅速に応答します
  2. SQL 監視機能を提供します
  3. SQL の平均値、最大値、最小値を提供します。統計
  4. アンチSQLインジェクション機能を有効にする
  5. Druidのコードはデータベースドライバーと同じくらい小さく、2MB以下であり、組み込みアプリケーションに非常に適しています。

2. 接続プール管理に Druid を使用する
Java アプリケーションでの接続プール管理に Druid を使用する方法を見てみましょう。

  1. Druid の依存関係を紹介する
    Druid 関連の依存関係を pom.xml に紹介する
<!-- druid -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.10</version>
</dependency>
  1. Druid 接続プールを構成する
    Druid 接続プールを使用する前に設定する必要があります。 Druid の設定は、コードと設定ファイルの 2 つの方法で行うことができますが、ここではコードによる方法を例に挙げます。
//创建 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、ユーザー名、パスワードに加え、初期接続数、最大接続数、その他の構成情報を設定します。このうち、各設定の意味は以下のとおりです。

  • driverClassName: JDBC ドライバーの完全なクラス名
  • url: データベース接続 URL
  • username: データベース接続ユーザーname
  • password: データベース接続パスワード
  • initialSize: 初期化中に確立された物理接続の数。初期化は起動時に行われます。
  • maxActive: 接続プールの最大数
  • minIdle: 接続プールの最小数
  • maxWait: 接続を取得するときの最大待機時間 (ミリ秒単位)。
  • timeBetweenEvictionRunsMillis: には 2 つの意味があります: 1) Destroy スレッドは接続間隔を検出します。 2) testwhileIdle の判断基準。詳細は testwhileIdle 属性の説明を参照してください。
  • 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
    
  1. データベース接続の取得
    DruidDataSource インスタンスが作成された後、DruidDataSource.getConnection() メソッドを通じて接続を取得できます。
Connection conn = dataSource.getConnection();
  1. 監視統計とSQL実行ログの実装
    Druidは、接続プールの基本機能に加えて、監視統計やSQL実行ログなどの実践的な機能も提供します。これは、コードの開発時にフィルターを設定することで実現できます。
// 创建 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。