Connexion de Java à InterSystems IRIS via JDBC
Dans l'article précédent, nous avons abordé ODBC et la connexion de C#. Intéressons-nous maintenant à JDBC et Java. Le pilote JDBC d'InterSystems est la méthode recommandée pour intégrer vos applications Java de manière performante.
Voici un guide pas à pas pour connecter votre application Java à une instance IRIS à l'aide du pilote JDBC.
Étape 1 : Obtenir et inclure le pilote JDBC InterSystems IRIS
Contrairement aux pilotes ODBC, souvent installés à l'échelle du système, les pilotes JDBC sont généralement distribués sous forme de fichiers JAR qui doivent être inclus dans le classpath de votre projet Java.
Si InterSystems IRIS est installé sur votre machine locale ou sur une autre machine à laquelle vous avez accès, vous trouverez le fichier dans le répertoire d'installation (par exemple, `install-dir/dev/java/lib/`), où `install-dir` correspond au répertoire d'installation de l'instance. Vous pouvez également télécharger le fichier JAR depuis la page des packages de pilotes.
Ou, comme le suggère @Dmitry Maslennikov dans les commentaires, utilisez le dépôt central Maven :
<dependency>
<groupId>com.intersystems</groupId>
<artifactId>intersystems-jdbc</artifactId>
<version>3.10.5</version>
</dependency>ou pour Gradle :
implementation("com.intersystems:intersystems-jdbc:3.10.5")Inclure le fichier JAR dans le projet :
- Maven/Gradle : Si vous utilisez un outil de construction, la méthode la plus simple consiste à ajouter le pilote JDBC InterSystems comme dépendance dans votre fichier
pom.xmloubuild.gradle. Le fichier JAR sera alors téléchargé et géré automatiquement. - Manuellement : Pour les projets simples, vous devez placer le fichier JAR dans un répertoire du projet (par exemple,
/lib) et l'ajouter explicitement à votre classpath lors de la compilation et de l'exécution.
Étape 2 : Définir la connexion JDBC
L’URL de connexion JDBC spécifie précisément où et comment l’application Java se connecte à la base de données. Elle est au format suivant : jdbc:<sous-protocole>://<hôte>:<port>/<espace de noms>.
Le format pour InterSystems IRIS est :
String url = "jdbc:IRIS://127.0.0.1:1972/USER";
String user = "_System";
String password = "SYS";Remarque :
- Le préfixe du pilote est jdbc:IRIS.
- 127.0.0.1 est l’adresse du serveur (à modifier pour les connexions distantes).
- 1972 est le port du SuperServer IRIS (la norme est généralement 1972 ou 51773).
- USER est l’espace de noms cible dans InterSystems IRIS où résident votre code et vos données.
- L’utilisateur par défaut est _System avec le mot de passe SYS. Modifiez toujours ces valeurs par défaut en environnement de production.
Étape 3 : Implémenter la connexion en Java
Nous utiliserons le package java.sql pour établir la connexion et exécuter une requête.
Voici un exemple Java minimal qui se connecte à IRIS, exécute une requête simple sur une table par défaut et affiche le résultat en utilisant try-with-resources pour une gestion fiable de la connexion.
package com.example;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
publicclassIrisJdbcConnector {
publicstaticvoidmain(String[] args) {
// 1. Define the connection details
String url = "jdbc:IRIS://127.0.0.1:1972/USER";
String user = "_System";
String password = "SYS";
int maxId = 5; // Parameter for the query// The try-with-resources block ensures all resources are closed automaticallytry (
// 2. Establish the connection
Connection conn = DriverManager.getConnection(url, user, password);
// 3. Define the SQL Query using a placeholder (?)
PreparedStatement pstmt = conn.prepareStatement("SELECT ID, Name, DOB FROM Sample.Person WHERE ID < ?")
) {
System.out.println("Connection to InterSystems IRIS successful!");
// 4. Bind the parameter value
pstmt.setInt(1, maxId);
// 5. Execute the querytry (ResultSet rs = pstmt.executeQuery()) {
System.out.println("--- Query Results ---");
// 6. Iterate through the resultswhile (rs.next()) {
// Access data by column nameint id = rs.getInt("ID");
String name = rs.getString("Name");
// JDBC automatically handles the mapping of IRIS types to Java types (e.g., Date)
String dob = rs.getDate("DOB").toString();
System.out.println(String.format("ID: %d, Name: %s, DOB: %s", id, name, dob));
}
}
} catch (SQLException e) {
// 7. Handle JDBC-specific exceptions (e.g., connection failure, invalid SQL)
System.err.println("\n--- Database Error ---");
System.err.println("SQL State: " + e.getSQLState());
System.err.println("Error Message: " + e.getMessage());
System.err.println("Ensure the IRIS server is running and the JDBC driver JAR is in the classpath.");
} catch (Exception e) {
System.err.println("\n--- General Error ---");
System.err.println(e.getMessage());
}
}
}❗ Comme pour toute connexion à une base de données, utilisez toujours des instructions préparées (similaires aux requêtes paramétrées) dans le code de production pour éviter les vulnérabilités d'injection SQL.