C3p0 データベース接続の簡単な使用法をすぐに学習します (構成ファイルを使用)

c3p0 データベース接続プールの使用 (1)

データベース接続プールの理論的知識

c3p0 データベース接続プールを使用する場合は、まずデータベース接続プールとは何か、およびデータベース接続プールが導入される理由を理解する必要があります。

  • JDBC を使用してデータベースと対話する場合、データベースにアクセスするたびに接続が作成されますConnection。データベースの操作が完了すると、接続はすぐに閉じられ、次回のアクセスのために接続が再接続されます。デメリットとしては、接続申請はコンピュータの最下位層を扱うことになり、各アプリケーションの接続操作に時間がかかってしまいます。

  • したがって、上記の問題を解決するために、プログラマは接続を取得したいだけでなく、運用プロセス中に接続の申請を待機するために多くの時間とリソースを費やしたくありません。業務処理レベルで。したがって、データベース接続プールが存在します。データ接続プールの「プール」は、同じものを多数配置し、アクティビティを維持できるプールとして想像できます。データベース接続プールはデータベース接続用のプールです。その中には多数のデータベース接続が存在する可能性があり、データベース接続を使用する必要がある場合は、プールから (つまり、アドレスを通じて) 取得するだけで済みます。データベース接続プール内のデータベース接続 適用も時間のかかる操作ですが、これと前の操作の違いは何でしょうか? 確かに、データベース接続プール内のデータベース接続も申請する必要がありますが、唯一の違いは、データベース接続はアプリケーションの初期化プロセス中に事前に申請され、接続は閉じられないことです。このようにして、業務処理中にデータベース接続の申請を待つ必要がなくなり、データベース接続プールから直接「取得」するだけです。

  • データベース接続プール テクノロジはアイデアです。このアイデアを実装する企業は数多くあります。データベース接続プールの基盤となるテクノロジは企業ごとに異なりますが、効果は同じです。必要なのは、それらを使用することです。データベース上の一般的なデータベース接続プール テクノロジは、マーケットには、c3p0、ドルイド、DBCP... 今日学ぶのは c3p0 です

特定のコードは C3p0 を実装します

データベースの作成

c3p0 はサードパーティであるため、これを使用するには c3p0 jar パッケージを使用する必要があります。(Maven プロジェクトは依存関係を直接インポートできます) https://mvnrepository.com/artifact/com.mchange/c3p0 (これは Maven の特定の接続です。対応するバージョンを見つけた後に直接ダウンロードするか、依存関係をインポートできます)

ダウンロード後、jar パッケージをプロジェクトの lib ディレクトリにインポートするだけで完了です。ここではブロガーがMavenを使用しているため、この部分は表示されません。

まずは任意の名前でデータベースを作成しますが、今回作成した名前は(test)です!

次に、テーブルを作成します。具体的なコードとテーブルの構造は次のとおりです。

ここに画像の説明を挿入
ここに画像の説明を挿入

/*
 Navicat Premium Data Transfer

 Source Server         : localhost
 Source Server Type    : MySQL
 Source Server Version : 50734
 Source Host           : localhost:3306
 Source Schema         : test

 Target Server Type    : MySQL
 Target Server Version : 50734
 File Encoding         : 65001

 Date: 24/09/2021 16:32:12
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for cakeshop
-- ----------------------------
DROP TABLE IF EXISTS `cakeshop`;
CREATE TABLE `cakeshop`  (
  `id` int(11) NOT NULL DEFAULT 0,
  `name` varchar(20) CHARACTER SET gb2312 COLLATE gb2312_chinese_ci NULL DEFAULT NULL,
  `price` double NULL DEFAULT NULL,
  `size` varchar(30) CHARACTER SET gb2312 COLLATE gb2312_chinese_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = MyISAM CHARACTER SET = gb2312 COLLATE = gb2312_chinese_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of cakeshop
-- ----------------------------
INSERT INTO `cakeshop` VALUES (1, '草莓蛋糕', 157, '大号');
INSERT INTO `cakeshop` VALUES (2, '蓝莓蛋糕', 121, '中号');
INSERT INTO `cakeshop` VALUES (3, '提拉米苏', 154, '小号');
INSERT INTO `cakeshop` VALUES (4, '巧克力杏仁蛋糕', 253, '大号');
INSERT INTO `cakeshop` VALUES (5, '黑森林蛋糕', 130, '中号');
INSERT INTO `cakeshop` VALUES (6, '沙架蛋糕', 156, '大号');
INSERT INTO `cakeshop` VALUES (7, '史多伦蛋糕', 214, '小号');
INSERT INTO `cakeshop` VALUES (8, 'Castella蛋糕', 221, '大号');
INSERT INTO `cakeshop` VALUES (9, '撒哈蛋糕', 234, '小号');
INSERT INTO `cakeshop` VALUES (10, '木材蛋糕', 310, '中号');
INSERT INTO `cakeshop` VALUES (11, '波士顿派', 244, '小号');
INSERT INTO `cakeshop` VALUES (12, '戚风蛋糕', 112, '小号');
INSERT INTO `cakeshop` VALUES (13, '瑞士卷', 110, '大号');
INSERT INTO `cakeshop` VALUES (14, '焦糖玛奇朵', 241, '小号');
INSERT INTO `cakeshop` VALUES (15, '翻粮蛋糕', 173, '大号');
INSERT INTO `cakeshop` VALUES (16, '维也纳巧克力杏仁蛋糕', 223, '小号');
INSERT INTO `cakeshop` VALUES (17, '起士蛋糕', 154, '大号');
INSERT INTO `cakeshop` VALUES (18, '巧克力蛋糕', 100, '中号');
INSERT INTO `cakeshop` VALUES (19, '卡布琪诺', 113, '小号');
INSERT INTO `cakeshop` VALUES (20, '火焰石', 353, '中号');
INSERT INTO `cakeshop` VALUES (21, '巧克力小雪', 190, '中号');
INSERT INTO `cakeshop` VALUES (22, '焦糖小碗', 89, '大号');
INSERT INTO `cakeshop` VALUES (23, 'Brownie布朗尼', 311, '大号');
INSERT INTO `cakeshop` VALUES (24, 'Red Velvet Cake红丝绒蛋糕', 401, '中号');
INSERT INTO `cakeshop` VALUES (25, 'Financier费南雪', 388, '中号');

SET FOREIGN_KEY_CHECKS = 1;

c3p0設定情報の注入

c3p0 の注入 データベースに関する情報は、構成ファイルまたはメソッド内の注入を通じて注入できます。

  • まずディスプレイ構成ファイルを挿入しましょう。

リソースの下に c3p0-config.xml を作成します (この名前である必要があります)。その内容は次のとおりです。

<c3p0-config>
  <!-- 使用默认的配置读取连接池对象 -->
  <default-config>
  	<!--  连接参数 -->
    <property name="driverClass">com.mysql.jdbc.Driver</property>
    <property name="jdbcUrl">jdbc:mysql://47.93.197.238:3306/test</property>
    <property name="user">root</property>
    <property name="password">root123456</property>
    
    <!-- 连接池参数 -->
    <!--初始化的申请的连接数量-->
    <property name="initialPoolSize">5</property>
    <!--最大的连接数量-->
    <property name="maxPoolSize">10</property>
    <!--连接超时时间-->
    <property name="checkoutTimeout">3000</property>
  </default-config>

  <named-config name="otherc3p0"> 
    <!--  连接参数 -->
    <property name="driverClass">com.mysql.jdbc.Driver</property>
    <property name="jdbcUrl">jdbc:mysql://47.93.197.238:3306/test</property>
    <property name="user">root</property>
    <property name="password">root123456</property>
    
    <!-- 连接池参数 -->
    <property name="initialPoolSize">5</property>
    <property name="maxPoolSize">8</property>
    <property name="checkoutTimeout">1000</property>
  </named-config>
</c3p0-config>

おすすめ

転載: blog.csdn.net/weixin_45927121/article/details/120458149