MySQL

Si vous ne l'avez pas déjà installé, suivez les indications de cette page.

Création de la base de données "customer"

Cette base de données va être utilisée ci-dessous et dans le TP 1. Elle contient quelques tables correspondant à un magasin de produits informatiques.

Lancez le Workbench de MySQL (menu Windows > MySQL > MySQL Workbench).

Clic sur la connexion à l'instance que vous venez d'installer. Vous allez devoir donner le mot de passe de root que vous avez choisi pendant l'installation.

Dans le Workbench, menu File > New Query Tab.

Dans l'onglet créé, tapez
create database customer;

Lancez la commande en cliquant sur l'icône "Execute the selected portion of the script, or everything is there is no selection". La zone Output du bas devrez vous confirmer que tout s'est bien passé.

Lancez la commande (n'oubliez pas !)
use customer;

Il reste à créer les tables et à entrer les données. Pour cela, vous allez utiliser ce script.

Copiez le contenu du script et collez-le à la suite des 2 commandes que vous venez de taper.

Sélectionnez tout ce que vous venez de coller et cliquez sur la même icône "Execute the selected portion of the script, or everything is there is no selection". Vérifiez que tout s'est bien passé dans la zone Output.

Pour vous en assurer, tapez la requête

select name, discount_code.rate 
from customer join discount_code 
where customer.discount_code = discount_code.discount_code;

Si vous savez le faire, créez un nouveau compte utilisateur et donnez-lui tous les droits sur la base customer. Dans la suite et dans les TPs vous utiliserez ce compte, plutôt que root, pour vous connecter à MySQL. Si vous ne savez pas faire, vous utiliserez root (pour des raisons de sécurité, pas recommandé pour vos développement futurs).

Si tout va bien, vous pouvez sortir de workbench, sinon corrigez les éventuelles erreurs.

Récupération du driver JDBC de MySQL

Pour l'intégration de MySQL à NetBeans et à Payara vous avez besoin du driver JDBC de MySQL.

La page pour récupérer le driver : https://dev.mysql.com/downloads/connector/j/.

Dans la liste déroulante "Select Operating System:", choisissez "Platform Independent".

Cliquez sur le bouton "Download" de la ligne tar ou zip suivant votre préférence pour récupérer le driver JDBC.

Il faut ensuite extraire le fichier mysql-connector-java-8.0.25.jar du fichier compacté que vous avez récupéré. Placez ce fichier jar dans un répertoire de votre disque dur. Retenez bien l'endroit où vous le mettez car vous allez l'utiliser par la suite.

Intégration de MySQL à NetBeans

Ouvrez NetBeans et allez dans la fenêtre Services (si elle n'est pas déjà ouverte, ouvrez-la avec le menu Window > Services).

Ouvrez l'entrée Databases > Drivers. Si vous avez déjà une entrée MySQL, utilisez-la ; sinon, clic droit sur Drivers et "New Driver...".

Si vous créez un nouveau driver, une fenêtre s'ouvre. Dans le champ "Driver File(s)" vous devez désigner le fichier jar du driver que vous avez récupéré à l'étape précédente (cliquez sur Add pour cela). Dans le champ "Driver class", entrez com.mysql.cj.jdbc.Driver (il devrait être mis automatiquement par NetBeans d'après le fichier jar). Pour le nom, mettez ce que vous voulez, par exemple "MySQL 8.0.25 (Connector/J driver)".

New Driver

Si vous aviez déjà un driver pour MySQL, clic droit sur le driver et Customize. Vérifiez les informations : le fichier driver et la classe du driver. Si le fichier driver est manquant, cliquez sur Add et indiquez l'emplacement du fichier jar que vous avez récupéré à l'étape précédente.

Il faut maintenant créer une entrée pour une connexion avec la base customer que vous avez créée ci-dessus. Cette entrée vous permettra de voir les données de la base sans sortir de NetBeans.

Pour cela, clic droit sur le driver que vous venez de créer et "Connect Using...". Une fenêtre "New Connection Wizard" s'affiche.

Vous devez saisir customer pour le champ Database ce qui va modifier le champ "JDBC URL" pour mettre la valeur
jdbc:mysql://localhost:3306/customer?zeroDateTimeBehavior=CONVERT_TO_NULL&allowPublicKeyRetrieval=true

Vous pouvez choisir d'enregistrer le mot de passe ou non. Si vous ne l'enregistrez pas, il vous sera demandé à chaque connexion (c'est plus sûr dans le cas où vous travaillez avec des données sensibles).

Saisissez le mot de passe de root de MySQL et testez en cliquant sur "Test Connection". "Connection Succeeded" doit s'afficher en bas.

Connection Succeeded

Si un message d'erreur s'affiche, revoyez bien toutes les informations saisies ; vous avez dû faire une erreur.

Vous pouvez cliquer sur Finish ou bien sur Next pour voir la suite, mais vous avez fini pour ce point.

Il devrait maintenant y avoir une nouvelle connexion disponible sous l'entrée Databases de NetBeans, de nom "jdbc:mysql://localhost:3306/customer?zeroDateTimeBehavior=CONVERT_TO_NULL [root on Default schema]" si vous n'avez pas changé le nom donné par défaut. Ouvrez la sous-entrée customer et si vous ouvrez Tables vous devriez voir les tables que vous avez créées dans cette base. S'il n'y a pas de de sous-entrées, clic droit sur la nouvelle connexion et "Connect...".

Juste pour tester, clic droit sur la table customer et "View Data...".

Si vous avez des messages d'erreur du type
Connexion impossible avec MySQL ; "Connection could not be allocated because: Public Key Retrieval is not allowed", reportez-vous à l'annexe qui explique comment résoudre le problème.

Intégration de MySQL à Payara

Pour les applications Jakarta EE, une base de données est représentée par une "source de données" qui peut être définie de plusieurs façons.

Le plus souvent les sources de données sont définies sur le serveur d'application pour des raisons de sécurité et pour faciliter leur utilisation par plusieurs applications. La définition dans l'application est plus souple et évite des manipulations dans le serveur d'application si on veut changer de serveur d'application. La définition d'une source de données n'est pas standardisée et elle est bien différente selon les serveurs d'application, alors que la définition dans l'application est standardisée.

Pour définir une source de données dans Payara (je le répète, cette procédure sera très différente si vous utilisez, par exemple le serveur WildFly ou le serveur Open Liberty), il faut utiliser la console d'administration ou la commande asadmin de Payara. Vous utiliserez la console d'administration.

Ajouter le driver JDBC

Payara a besoin du driver JDBC de MySQL que vous avez récupéré.

Le fichier jar du driver doit être copié dans le répertoire lib du domaine que vous utilisez. Ce répertoire fait partie du classpath utilisé par Payara pendant son exécution.

Si vous n'avez rien fait de spécial et si vous avez installé Payara dans le répertoire C:\autresprogrammes\payara\payara-5.xxx, ça sera le répertoire C:\autresprogrammes\payara\payara-5.xxx\payara5\glassfish\domains\domain1\lib.

Attention, si Payara est déjà démarré, il faut le redémarrer pour que le driver soit pris en compte.

Démarrer Payara

Il faut commencer par lancer Payara comme c'est expliqué dans cette page.

La console d'administration peut s'afficher dans un navigateur de 2 façons :

Créer un pool de connexions pour la base customer de MySQL

Dans la console d'administration de Payara, allez dans l'entrée Resources > JDBC > JDBC Connection Pools et cliquez sur New pour ajouter un nouveau pool de connexions.

Entrez le nom du pool : mySQLPool (petite faute de frappe dans l'image ci-dessous), le type de ressource : javax.sql.DataSource, le vendeur : MySql8 (attention, pas MySql).

New JDBC Connection

Clic sur Next.

Le nom de la classe pour les sources de données (Datasource Classname) doit être com.mysql.cj.jdbc.MysqlDataSource.

Descendez en bas de la nouvelle fenêtre (Additional Properties) pour modifier les valeurs des propriétés.

Le plus simple est de supprimer toutes les propriétés et d'ajouter les suivantes (attention à bien respecter les majuscules/minuscules) :

Cliquez ensuite sur Finish.

Dans la liste des pools de connexions, cliquez sur le pool que vous venez de créer et cliquez sur le bouton Ping. Vous devez voir "Ping Succeeded" en rouge en haut de la page. Sinon, lisez le message d'erreur et trouvez l'erreur que vous avez faite. Si vous modifiez des valeurs, n'oubliez pas de cliquer sur Save pour les sauvegarder.

Créez une ressource JDBC pour la base customer

Dans la console d'administration de Payara, clic sur JDBC Resources.

Clic sur New.

Saisissez ces valeurs :

JNDI Name : jdbc/customer
Pool Name : mySQLPool (le nom du pool que vous venez de créer)

Cliquez sur OK pour sauvergarder votre définition.