Kit SDK d’extensibilité Microsoft pour Java pour SQL Server
S’applique à : SQL Server 2019 (15.x) et versions ultérieures
Découvrez comment vous pouvez implémenter un programme Java pour SQL Server avec le SDK d’extensibilité Microsoft pour Java. Le kit SDK est une interface pour l’extension de langage Java, qui permet d’échanger des données avec SQL Server et d’exécuter du code Java à partir de SQL Server.
Le kit SDK est installé dans le cadre de SQL Server 2019 (15.x) et versions ultérieures, sur Windows et Linux :
- Chemin d'installation par défaut sur Windows :
<instance installation home directory>\MSSQL\Binn\mssql-java-lang-extension.jar
- Chemin d'installation par défaut sur Linux :
/opt/mssql/lib/mssql-java-lang-extension.jar
Le code est open source et se trouve dans le dépôt GitHub des extensions de langage SQL Server.
Exigences d’implémentation
L’interface du kit SDK définit un ensemble d’exigences à remplir pour permettre à SQL Server de communiquer avec le runtime Java. Pour utiliser le kit SDK, vous devez suivre certaines règles d’implémentation dans votre classe principale. SQL Server peut ensuite exécuter une méthode spécifique dans la classe Java et échanger des données à l’aide de l’extension de langage Java.
Pour obtenir un exemple d’utilisation du kit SDK, consultez Tutoriel : Rechercher une chaîne à l’aide d’expressions régulières (regex) en Java.
Classes du kit SDK
Le kit SDK comprend trois classes.
Deux classes abstraites qui définissent l’interface utilisée par l’extension Java pour échanger des données avec SQL Server :
AbstractSqlServerExtensionExecutor
AbstractSqlServerExtensionDataset
La troisième classe est une classe d’assistance, qui contient une implémentation d’un objet de jeu de données. Il s'agit d'une classe facultative qui facilite la prise en main. Vous pouvez également utiliser votre propre implémentation d’une telle classe à la place.
PrimitiveDataset
Dans la section suivante, vous trouverez des descriptions de chaque classe dans le kit de développement logiciel (SDK). Le code source des classes du kit SDK est disponible dans le dépôt GitHub des extensions de langage SQL Server.
Classe : AbstractSqlServerExtensionExecutor
La classe abstraite AbstractSqlServerExtensionExecutor
contient l'interface qui permet l'exécution du code Java par l'extension de langage Java pour SQL Server.
Votre classe Java principale doit hériter de cette classe. Hériter de cette classe signifie que vous devez implémenter certaines méthodes de la classe dans votre propre classe.
Pour hériter de cette classe abstraite, étendez-la à l’aide de son nom de classe abstraite dans la déclaration de classe :
public class <MyClass> extends AbstractSqlServerExtensionExecutor {}
Au minimum, votre classe principale doit implémenter la méthode execute (...).
Méthode execute
La méthode execute est la méthode appelée à partir de SQL Server via l’extension de langage Java, et qui permet d’appeler du code Java à partir de SQL Server. Il s'agit d'une méthode clé dans laquelle vous incluez les principales opérations à exécuter à partir de SQL Server.
Pour passer des arguments de méthode à Java à partir de SQL Server, utilisez le paramètre @param
dans sp_execute_external_script
. La méthode execute
accepte ses arguments de cette manière.
public AbstractSqlServerExtensionDataset execute(AbstractSqlServerExtensionDataset input, LinkedHashMap<String, Object> params) {}
Méthode init
La méthode init est exécutée après le constructeur et avant la méthode execute. Toutes les opérations qui doivent être effectuées avant execute(...)
peuvent l'être avec cette méthode.
public void init(String sessionId, int taskId, int numtask) {}
Classe : AbstractSqlServerExtensionDataset
La classe abstraite AbstractSqlServerExtensionDataset
contient l'interface de gestion des données d'entrée et de sortie utilisées par l'extension Java.
Classe : PrimitiveDataset
La classe PrimitiveDataset
est une implémentation de AbstractSqlServerExtensionDataset
qui stocke les types simples en tant que tableaux de primitives.
PrimitiveDataset
est fournie dans le kit SDK en tant que classe d'assistance facultative. Si vous n'utilisez pas cette classe, vous devez implémenter votre propre classe, qui hérite de AbstractSqlServerExtensionDataset
.