Rumah  >  Artikel  >  Java  >  Menggunakan Durid untuk pengurusan kolam sambungan pangkalan data dalam pembangunan API Java

Menggunakan Durid untuk pengurusan kolam sambungan pangkalan data dalam pembangunan API Java

WBOY
WBOYasal
2023-06-19 08:44:421847semak imbas

Semasa proses pembangunan Java API, menyambung ke pangkalan data adalah keperluan biasa. Memandangkan menggunakan DriverManager untuk mendapatkan sambungan pangkalan data setiap kali akan membawa overhed yang tinggi, adalah perlu untuk menggunakan teknologi pengumpulan sambungan. Druid ialah kumpulan sambungan JDBC berprestasi tinggi dengan satu siri fungsi berkuasa seperti pemantauan, statistik dan pengembangan Artikel ini akan memperkenalkan cara menggunakan Druid dalam pembangunan Java API.

1. Pengenalan kepada Druid
Druid ialah kumpulan sambungan pangkalan data yang dibangunkan oleh Alibaba. Ia mempunyai ciri-ciri prestasi cemerlang, fungsi yang kaya dan penggunaan yang mudah. Kelebihan kumpulan sambungan Druid adalah seperti berikut:

  1. Respon pantas terhadap permintaan SQL
  2. Menyediakan keupayaan pemantauan SQL
  3. Menyediakan nilai purata, maksimum, minimum SQL masa pelaksanaan, dsb. Statistik
  4. Dayakan fungsi suntikan anti-SQL
  5. Kod Druid adalah sekecil pemacu pangkalan data, tidak lebih daripada 2MB, yang sangat sesuai untuk aplikasi terbenam.

2. Gunakan Druid untuk pengurusan kumpulan sambungan
Mari kita lihat cara menggunakan Druid untuk pengurusan kumpulan sambungan dalam aplikasi Java.

  1. Perkenalkan kebergantungan Druid
    Perkenalkan kebergantungan berkaitan Druid dalam pom.xml
<!-- druid -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.10</version>
</dependency>
  1. Konfigurasikan kumpulan sambungan Druid
    Sebelum menggunakan kumpulan sambungan Druid , yang perlu dikonfigurasikan. Konfigurasi Druid boleh dicapai melalui dua kaedah: kod dan fail konfigurasi Di sini kita mengambil kaedah kod sebagai contoh.
//创建 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);

Dalam kod di atas, kami menetapkan URL sambungan pangkalan data, nama pengguna, kata laluan, serta bilangan awal sambungan, bilangan maksimum sambungan dan maklumat konfigurasi lain. Antaranya, maksud setiap konfigurasi adalah seperti berikut:

  • driverClassName: JDBC driver full class name
  • url: database connection URL
  • username: database connection user nama
  • kata laluan: kata laluan sambungan pangkalan data
  • initialSize: bilangan sambungan fizikal yang diwujudkan semasa permulaan. Permulaan berlaku pada permulaan.
  • maxActive: Bilangan maksimum kumpulan sambungan
  • minIdle: Bilangan minimum kumpulan sambungan
  • maxTunggu: Masa menunggu maksimum apabila mendapatkan sambungan, dalam milisaat.
  • timeBetweenEvictionRunsMillis: mempunyai dua maksud: 1) Benang Destroy akan mengesan selang sambungan. 2) Untuk asas penghakiman testWhileIdle, sila rujuk perihalan atribut testWhileIdle untuk butiran
  • minEvictableIdleTimeMillis: masa kemandirian minimum sambungan dalam kolam, dalam milisaat.
    validationQuery’ digunakan untuk menyemak sama ada sambungan itu sah. Ia memerlukan pernyataan pertanyaan (hasil pelaksanaan pernyataan itu tidak penting).
    -testWhileIdle: Diuji semasa memohon sambungan Jika masa melahu lebih besar daripada timeBetweenEvictionRunsMillis, laksanakan validationQuery untuk menyemak sama ada sambungan itu sah.
    -testOnBorrow: Apabila memohon sambungan, laksanakan validationQuery untuk menyemak sama ada sambungan itu sah Konfigurasi ini akan mengurangkan prestasi.
    -testOnReturn: Apabila mengembalikan sambungan, jalankan validationQuery untuk menyemak sama ada sambungan itu sah dengan melakukan konfigurasi ini akan mengurangkan prestasi dan menambah pertimbangan pada kumpulan sambungan
    -poolPreparedStatements: sama ada untuk cache preparedStatement. PSCache. PSCache sangat meningkatkan prestasi pangkalan data yang menyokong kursor, seperti Oracle. Adalah disyorkan untuk menutupnya di bawah mysql.
    -maxOpenPreparedStatements: Selepas menghidupkan poolPreparedStatements, anda perlu menentukan bilangan pernyataan cache pada setiap sambungan
    -penapis: Jenis atribut ialah pemalam Sambungan dikonfigurasikan melalui pemalam yang biasa digunakan. ins ialah:

      监控统计用的filter:stat
      日志用的filter:log4j
      防御SQL注入的filter:wall
    
  1. Dapatkan sambungan pangkalan data
    Selepas contoh DruidDataSource dicipta, kita boleh mendapatkan sambungan melalui kaedah DruidDataSource.getConnection().
Connection conn = dataSource.getConnection();
  1. Pelaksanaan statistik pemantauan dan log pelaksanaan SQL
    Selain fungsi asas kumpulan sambungan, Druid juga menyediakan fungsi praktikal seperti statistik pemantauan dan log pelaksanaan SQL. Kita boleh mencapai ini dengan menetapkan Penapis semasa membangunkan kod.
// 创建 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));

Semasa proses pelaksanaan khusus, kita boleh memilih untuk menggunakan statistik pemantauan atau fungsi log mengikut keperluan.

3. Kesimpulan
Artikel ini memperkenalkan cara menggunakan Druid untuk pengurusan kumpulan sambungan dalam pembangunan Java API. Dengan menggunakan Druid, kami bukan sahaja boleh meningkatkan prestasi aplikasi, tetapi juga memperoleh pemahaman yang lebih komprehensif tentang pengendalian aplikasi melalui fungsi seperti statistik pemantauan dan log pelaksanaan SQL.

Atas ialah kandungan terperinci Menggunakan Durid untuk pengurusan kolam sambungan pangkalan data dalam pembangunan API Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn