Pourquoi utiliser DataSource au lieu de DriverManager?

Je suis en train de lire la spécification Java JDBC (vr. 4) et je suis tombé sur cette déclaration :

DataSource - cette interface a été introduite dans l’API JDBC 2.0 Optional Package. Elle est recommandée par rapport à DriverManager parce qu’elle permet que les détails concernant la source de données sous-jacente soient transparents pour l’application.

Pourquoi utiliser DataSource au lieu de DriverManager ?

Meilleure scalabilité et maintenance

Pour DriverManager, vous devez connaître tous les détails (hôte, port, nom d’utilisateur, mot de passe, classe de pilote) pour vous connecter à la base de données et pour obtenir des connexions. Externaliser ces détails dans un fichier de propriétés ne change rien au fait que vous devez les connaître.

En utilisant une DataSource, vous avez seulement besoin de connaître le nom JNDI. L’AppServer s’occupe des détails et n’est pas configuré par le fournisseur de l’application cliente, mais par un administrateur là où l’application est hébergée.

Supposons que vous ayez besoin de créer des connexions vous-même, comment allez-vous gérer les changements de charge, parfois vous avez 10 utilisateurs, parfois vous en avez 1000, vous ne pouvez pas simplement obtenir une connexion quand vous en avez besoin et plus tard la « libérer » pour que le serveur de base de données ne soit pas en manque de connexions, ce qui vous amène à la mise en pool des connexions. Le DriverManager ne le fournit pas, mais le DataSource le fait.

Si vous voulez programmer un pool de connexions vous-même, alors vous devez utiliser DriverManager, sinon utilisez DataSource.

DriverManager

  • Diminue les performances de l’application car les connexions sont créées/fermées dans les classes Java.
  • Ne prend pas en charge la mise des connexions en pool.

DataSource

  • Améliore les performances de l’application car les connexions ne sont pas créées/fermées dans une classe, elles sont gérées par le serveur d’application et peuvent être récupérées au moment de l’exécution.
  • Il permet de créer un pool de connexions.
  • Utile pour les applications d’entreprise

Les objets DataSource peuvent fournir un pool de connexion et des transactions distribuées, vous pouvez donc utiliser DataSource si vous avez besoin de l’une de ces fonctionnalités ou des deux.