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:
2. Gunakan Druid untuk pengurusan kumpulan sambungan
Mari kita lihat cara menggunakan Druid untuk pengurusan kumpulan sambungan dalam aplikasi Java.
<!-- 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);
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:
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
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));
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!