Heim  >  Artikel  >  Java  >  Verwendung von Durid für die Datenbankverbindungspoolverwaltung in der Java-API-Entwicklung

Verwendung von Durid für die Datenbankverbindungspoolverwaltung in der Java-API-Entwicklung

WBOY
WBOYOriginal
2023-06-19 08:44:421862Durchsuche

Während des Entwicklungsprozesses der Java API ist die Verbindung zur Datenbank eine häufige Anforderung. Da die Verwendung von DriverManager zum Herstellen einer Datenbankverbindung jedes Mal einen hohen Overhead mit sich bringt, ist die Verwendung der Verbindungspooltechnologie erforderlich. Druid ist ein leistungsstarker JDBC-Verbindungspool mit einer Reihe leistungsstarker Funktionen wie Überwachung, Statistik und Erweiterung. In diesem Artikel wird die Verwendung von Druid bei der Entwicklung der Java-API vorgestellt.

1. Einführung in Druid
Druid ist ein von Alibaba entwickelter Datenbankverbindungspool, der sich durch hervorragende Leistung, umfangreiche Funktionen und einfache Verwendung auszeichnet. Die Vorteile des Druid-Verbindungspools sind wie folgt:

  1. Schnelle Reaktion auf SQL-Anfragen
  2. Bereitstellung von SQL-Überwachungsfunktionen
  3. Bereitstellung statistischer Daten wie durchschnittlicher, maximaler und minimaler Werte der SQL-Ausführungszeit
  4. Aktivierung der Anti-SQL-Injection-Funktion
  5. Druid-Code So klein wie der Datenbanktreiber, nicht mehr als 2 MB, sehr gut geeignet für eingebettete Anwendungen.

2. Verwenden Sie Druid für die Verbindungspoolverwaltung. Schauen wir uns an, wie Sie Druid für die Verbindungspoolverwaltung in Java-Anwendungen verwenden.

    Druid-Abhängigkeiten einführen
  1. Druid-bezogene Abhängigkeiten in pom.xml einführen
  2. <!-- druid -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.1.10</version>
    </dependency>
    Druid-Verbindungspool konfigurieren
  1. Bevor Sie den Druid-Verbindungspool verwenden, müssen Sie ihn konfigurieren. Die Druid-Konfiguration kann durch zwei Methoden erreicht werden: Code und Konfigurationsdateien. Hier nehmen wir die Code-Methode als Beispiel.
  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);
Im obigen Code legen wir die Datenbankverbindungs-URL, den Benutzernamen, das Passwort sowie die anfängliche Anzahl von Verbindungen, die maximale Anzahl von Verbindungen und andere Konfigurationsinformationen fest. Darunter ist die Bedeutung jeder Konfiguration wie folgt:

    driverClassName: Vollständiger Klassenname des JDBC-Treibers
  • url: Datenbankverbindungs-URL
  • username: Datenbankverbindungs-Benutzername
  • password: Datenbankverbindungskennwort
  • initialSize: Stellen Sie eine physische her Verbindung während der Initialisierungsnummer. Die Initialisierung erfolgt beim Start.
  • maxActive: Maximale Anzahl an Verbindungspools
  • minIdle: Minimale Anzahl an Verbindungspools
  • maxWait: Maximale Wartezeit beim Verbindungsaufbau, in Millisekunden.
  • timeBetweenEvictionRunsMillis: hat zwei Bedeutungen: 1) Der Destroy-Thread erkennt das Verbindungsintervall. 2) Einzelheiten zur Beurteilungsgrundlage von testWhileIdle finden Sie in der Beschreibung des testWhileIdle-Attributs.
  • minEvictableIdleTimeMillis: Die minimale Überlebenszeit einer Verbindung im Pool in Millisekunden.

    validationQuery‘ wird verwendet, um zu überprüfen, ob die Verbindung gültig ist. Es erfordert eine Abfrageanweisung (das Ausführungsergebnis der Anweisung spielt keine Rolle).
    -testWhileIdle: Wird bei der Beantragung einer Verbindung getestet. Wenn die Leerlaufzeit größer als timeBetweenEvictionRunsMillis ist, führen Sie validationQuery aus, um zu überprüfen, ob die Verbindung gültig ist.
    -testOnBorrow: Führen Sie bei der Beantragung einer Verbindung validationQuery aus, um zu überprüfen, ob die Verbindung gültig ist. Diese Konfiguration verringert die Leistung.
    -testOnReturn: Führen Sie beim Zurückgeben der Verbindung validationQuery aus, um zu überprüfen, ob die Verbindung gültig ist. Durch diese Konfiguration wird die Leistung verringert und eine Beurteilung zum Verbindungspool hinzugefügt.
    -poolPreparedStatements: ob PreparedStatement, also PSCache, zwischengespeichert werden soll. PSCache verbessert die Leistung von Datenbanken, die Cursor unterstützen, wie z. B. Oracle, erheblich. Es wird empfohlen, es unter MySQL zu schließen.
    -maxOpenPreparedStatements: Nach dem Aktivieren von poolPreparedStatements müssen Sie die Anzahl der zwischengespeicherten Anweisungen für jede Verbindung angeben.
    -filters: Der Attributtyp ist eine Zeichenfolge, und das Erweiterungs-Plug-In wird über einen Alias ​​konfiguriert :

      监控统计用的filter:stat
      日志用的filter:log4j
      防御SQL注入的filter:wall
    

    Holen Sie sich die Datenbankverbindung
  1. Nachdem die DruidDataSource-Instanz erstellt wurde, können wir die Verbindung über die Methode DruidDataSource.getConnection() abrufen.
  2. Connection conn = dataSource.getConnection();
    Implementierung von Überwachungsstatistiken und SQL-Ausführungsprotokollen
  1. Zusätzlich zu den Grundfunktionen des Verbindungspools bietet Druid auch praktische Funktionen wie Überwachungsstatistiken und SQL-Ausführungsprotokolle. Wir können dies erreichen, indem wir beim Entwickeln von Code Filter festlegen.
  2. // 创建 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));
Während des spezifischen Implementierungsprozesses können wir je nach Bedarf Überwachungsstatistiken oder Protokollfunktionen verwenden.

3. Fazit

In diesem Artikel wird die Verwendung von Druid für die Verbindungspoolverwaltung bei der Entwicklung der Java-API vorgestellt. Durch die Verwendung von Druid können wir nicht nur die Leistung der Anwendung verbessern, sondern durch Funktionen wie Überwachungsstatistiken und SQL-Ausführungsprotokolle auch ein umfassenderes Verständnis des Betriebs der Anwendung erlangen.

Das obige ist der detaillierte Inhalt vonVerwendung von Durid für die Datenbankverbindungspoolverwaltung in der Java-API-Entwicklung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn