Maison >Java >javaDidacticiel >Utilisation de Durid pour la gestion du pool de connexions à la base de données dans le développement d'API Java

Utilisation de Durid pour la gestion du pool de connexions à la base de données dans le développement d'API Java

WBOY
WBOYoriginal
2023-06-19 08:44:421900parcourir

Pendant le processus de développement de l'API Java, la connexion à la base de données est une exigence courante. Étant donné que l'utilisation de DriverManager pour obtenir une connexion à la base de données à chaque fois entraînera une surcharge importante, il est nécessaire d'utiliser la technologie de regroupement de connexions. Druid est un pool de connexions JDBC hautes performances doté d'une série de fonctions puissantes telles que la surveillance, les statistiques et l'expansion. Cet article explique comment utiliser Druid dans le développement de l'API Java.

1. Introduction à Druid
Druid est un pool de connexions à une base de données développé par Alibaba. Il présente les caractéristiques d'excellentes performances, de fonctions riches et d'utilisation simple. Les avantages du pool de connexions Druid sont les suivants :

  1. Réponse rapide aux requêtes SQL
  2. Fournir des capacités de surveillance SQL
  3. Fournir un SQL moyen temps d'exécution, valeur maximale, valeur minimale et autres données statistiques
  4. Activer la fonction d'injection anti-SQL
  5. Le code de Druid est aussi petit que le pilote de base de données, pas plus de 2 Mo, très adapté aux applications embarquées.

2. Utilisez Druid pour la gestion du pool de connexions
Voyons comment utiliser Druid pour la gestion du pool de connexions dans les applications Java.

  1. Introduire les dépendances Druid
    Introduire les dépendances liées à Druid dans pom.xml
<!-- druid -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.10</version>
</dependency>
  1. Configurer le pool de connexion Druid# 🎜 🎜#Avant d'utiliser le pool de connexion Druid, vous devez le configurer. La configuration de Druid peut être réalisée via deux méthodes : le code et les fichiers de configuration. Nous prenons ici la méthode du code comme exemple.
  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);
Dans le code ci-dessus, nous définissons l'URL de connexion à la base de données, le nom d'utilisateur, le mot de passe, ainsi que le nombre initial de connexions, le nombre maximum de connexions et d'autres informations de configuration. Parmi eux, la signification de chaque configuration est la suivante :

    driverClassName : nom complet de la classe du pilote JDBC
  • url : URL de connexion à la base de données
  • #🎜 🎜#username : Nom d'utilisateur de connexion à la base de données
  • password : Mot de passe de connexion à la base de données
  • initialSize : Le nombre de connexions physiques établies lors de l'initialisation. L'initialisation a lieu au démarrage.
  • maxActive : Nombre maximum de pools de connexions
  • minIdle : Nombre minimum de pools de connexions
  • maxWait : Temps d'attente maximum lors de l'obtention d'une connexion, en millisecondes .
  • timeBetweenEvictionRunsMillis : a deux significations : 1) Le thread Destroy détectera l'intervalle de connexion. 2) Pour la base de jugement de testWhileIdle, veuillez vous référer à la description de l'attribut testWhileIdle pour plus de détails
  • minEvictableIdleTimeMillis : La durée minimale de survie de la connexion dans le pool, en millisecondes.
  • validationQuery' est utilisé pour vérifier si la connexion est valide. L'exigence est une instruction de requête (le résultat de l'exécution de l'instruction n'a pas d'importance).

    -testWhileIdle : Testé lors de la demande de connexion. Si le temps d'inactivité est supérieur à timeBetweenEvictionRunsMillis, exécutez validationQuery pour vérifier si la connexion est valide.
    -testOnBorrow : lors d'une demande de connexion, exécutez validationQuery pour vérifier si la connexion est valide. Cette configuration réduira les performances.
    -testOnReturn : lors du retour de la connexion, exécutez validationQuery pour vérifier si la connexion est valide. Faire cette configuration réduira les performances et ajoutera un jugement au pool de connexions
    -poolPreparedStatements : s'il faut mettre en cache PrepareStatement, ce qui. est PSCache. PSCache améliore considérablement les performances des bases de données prenant en charge les curseurs, telles qu'Oracle. Il est recommandé de le fermer sous mysql.
    -maxOpenPreparedStatements : Après avoir activé poolPreparedStatements, vous devez spécifier le nombre d'instructions mises en cache sur chaque connexion
    -filters : Le type d'attribut est une chaîne et le plug-in d'extension est configuré via un alias. Les plug-ins couramment utilisés sont : #🎜 🎜#

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


  • Obtenir la connexion à la base de données
DruidDataSource Une fois l'instance créée, nous pouvons obtenir la connexion via DruidDataSource Méthode .getConnection().
  1. Connection conn = dataSource.getConnection();

  2. Mise en place de statistiques de surveillance et de logs d'exécution SQL
En plus des fonctions de base du pool de connexions, Druid propose également des fonctions pratiques telles que la surveillance des statistiques et Journaux d'exécution SQL . Nous pouvons y parvenir en définissant Filter lors du développement du code.
  1. // 创建 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));

    Pendant le processus de mise en œuvre spécifique, nous pouvons choisir d'utiliser des statistiques de surveillance ou des fonctions de journalisation selon les besoins.
3. Conclusion

Cet article présente comment utiliser Druid pour la gestion du pool de connexions dans le développement de l'API Java. En utilisant Druid, nous pouvons non seulement améliorer les performances de l'application, mais également acquérir une compréhension plus complète du fonctionnement de l'application grâce à des fonctions telles que les statistiques de surveillance et les journaux d'exécution SQL.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn