ホームページ Java &#&チュートリアル Java API開発におけるデータベース接続プール管理にDuridを使用する

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

Jun 19, 2023 am 08:44 AM
java api durid

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 までご連絡ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

ホットトピック

Excelは、動作しないことを見つけて交換します Excelは、動作しないことを見つけて交換します Aug 13, 2025 pm 04:49 PM

ChecksearchSettingslikeのように、「Matchentirecellcontents」および「Matchcase」byexpindedoptionsinfindandReplaceを使用して、「tocorrectscope内」内で「lookin "issettovaluesand」を保証します

Javaアプリケーションを展開する方法 Javaアプリケーションを展開する方法 Aug 17, 2025 am 12:56 AM

PrepareyourapplicationbyusingMavenorGradletobuildaJARorWARfile,externalizingconfiguration.2.Chooseadeploymentenvironment:runonbaremetal/VMwithjava-jarandsystemd,deployWARonTomcat,containerizewithDocker,orusecloudplatformslikeHeroku.3.Optionally,setup

Javaアプリケーションでロギングを構成する方法は? Javaアプリケーションでロギングを構成する方法は? Aug 15, 2025 am 11:50 AM

logbackまたはlog4j2と組み合わせたSLF4Jを使用することは、Javaアプリケーションでログを構成する推奨方法です。対応するMaven依存関係を追加することにより、APIおよび実装ライブラリを導入します。 2.コード内のSLF4JのLoggerFactoryを介してロガーを取得し、パラメーター化されたロギング方法を使用して分離した効率的なログコードを記述します。 3. logback.xmlまたはlog4j2.xml構成ファイルを介して、ログ出力形式、レベル、ターゲット(コンソール、ファイル)、およびパッケージレベルのログ制御を定義します。 4.オプションで、構成ファイルスキャン機能を有効にして、ログレベルの動的調整を実現し、スプリングブートをアクチュエータエンドポイントを介して管理することもできます。 5.を含むベストプラクティスに従ってください

JavaのCastorによるXMLデータバインディング JavaのCastorによるXMLデータバインディング Aug 15, 2025 am 03:43 AM

castorenablesxml-to-javaobjectmappingviadefault conventionsorexplicitmappingfiles;

JSは、配列の開始に要素を追加します JSは、配列の開始に要素を追加します Aug 14, 2025 am 11:51 AM

JavaScriptでは、配列の先頭に要素を追加する最も一般的な方法は、unshift()メソッドを使用することです。 1. unshift()を使用すると、元の配列が直接変更されると、1つ以上の要素を追加して、追加された配列の新しい長さを返すことができます。 2.元の配列を変更したくない場合は、拡張機能操作者([newElement、... arr]など)を使用して新しい配列を作成することをお勧めします。 3. concat()メソッドを使用して、新しい要素配列と元の番号を組み合わせて、元の配列を変更せずに新しい配列を返すこともできます。要約すると、元の配列を変更するときにunshift()を使用し、元の配列を変更しておくときは拡張オペレーターを推奨します。

パフォーマンスの比較:Java vs. Go for Backend Services パフォーマンスの比較:Java vs. Go for Backend Services Aug 14, 2025 pm 03:32 PM

gutypivityOffersbetterruntimeperformanceは、特にfori/o-heavyservices、duetoits lightgoroutinesineficientscheduler、whilejava、canslowertart、canmatchgoincpu-boundtasptimization.2.gouseslessme

JavaでJSONと協力する方法 JavaでJSONと協力する方法 Aug 14, 2025 pm 03:40 PM

Toworkwithjsoninjava、useathird-partylibrarylikejackson、gson、orjson-b、asjavalacksbuilt-insupport;

JavaのAssertキーワードは何ですか? JavaのAssertキーワードは何ですか? Aug 17, 2025 am 12:52 AM

theasertkeywordinjavaisusedtoeas sumptionsduringDevelopment、throwinganassertionerroriftheconditionispalse.2

See all articles