Dans le chapitre précédent, vous avez pu :
Installer la base de données MySQL.
GĂ©nĂ©rer la structure minimale du projet, et lâimporter dans votre IDE.
Ce chapitre vous permettra de connecter lâapplication Java Ă la base de donnĂ©es. Ce lien que nous allons crĂ©er entre les 2 est facilitĂ© par Spring Boot et Spring Data JPA.
Lâune des caractĂ©ristiques de Spring Boot est de favoriser la configuration pour rĂ©duire la quantitĂ© de code Ă Ă©crire. De ce fait, pour connecter la base de donnĂ©es avec Spring Boot, il vous suffira dâĂ©crire de la configuration. Vous nâaurez pas de code Ă implĂ©menter.
Lors de la génération de la structure minimale du projet, le répertoire /src/main/resources contient un fichier par défaut nommé applications.properties.
Ce fichier est considĂ©rĂ© par Spring comme Ă©tant une source de propriĂ©tĂ©s. Cela signifie quâau dĂ©marrage de lâapplication, ce fichier sera lu, et les informations prĂ©sentes pourront ĂȘtre exploitĂ©es par le code de lâapplication.
En lâoccurrence, la documentation de Spring nous apprend quâen fournissant certaines propriĂ©tĂ©s, le framework exĂ©cutera le code nĂ©cessaire Ă la connexion de la base de donnĂ©es. Il sâagit concrĂštement dâouvrir une connexion JDBC sĂ©curisĂ©e vers la base de donnĂ©es.
TrÚs bien, donc pas de code mais des propriétés. Lesquelles exactement ??
Sachez tout dâabord quâil en existe de trĂšs nombreuses (si vous avez fait un tour sur le lien de la documentation, vous avez dĂ» vous en rendre compte 
) ; donc je vais vous montrer le minimum nécessaire.
Retrouvez-moi dans le screencast ci-dessous :
Voici le fichier que nous avons obtenu lors du screencast :
spring.datasource.url=jdbc:mysql://localhost:3306/carlib?serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5DialectReprenons une à une les propriétés que je vous ai présentées :
spring.datasource.url : Nous indiquons ici lâURL de connexion Ă la base de donnĂ©es. Cette URL possĂšde plusieurs informations clĂ©s, comme :
jdbc:mysql : le protocole utilisĂ© (un protocole peut ĂȘtre comparĂ© Ă une langue, câest un langage que 2 applications vont utiliser pour se comprendre).
localhost : le âhostâ, c'est-Ă -dire le poste oĂč la base de donnĂ©es est installĂ©e. En l'occurrence, votre base de donnĂ©es Ă©tant sur le mĂȘme poste que lâapplication que vous dĂ©veloppez, vous pouvez spĂ©cifier âlocalhostâ.
3306 : câest le port de la base de donnĂ©es sur votre poste. Attention, ce port peut varier selon lâinstallation rĂ©alisĂ©e.
/carlib : câest le nom de la base de donnĂ©es.
?serverTimeZone=UTC : ce paramÚtre supplémentaire permet de résoudre une erreur courante avec le driver MySQL.
spring.datasource.username : Nom de lâutilisateur pour se connecter Ă la base de donnĂ©es.
spring.datasource.password : Mot de passe de lâutilisateur spĂ©cifiĂ© prĂ©cĂ©demment.
spring.jpa.properties.hibernate.dialect : SpĂ©cifie au framework ORM le dialecte SQL Ă utiliser, cela permet dâoptimiser les traitements du framework.
Mais⊠mais⊠Pourquoi y a-t-il une rĂ©fĂ©rence Ă Hibernate ? Je croyais quâon faisait du Spring Data JPA ?
Câest une trĂšs bonne question ! Et je la saisis pour aller un peu plus dans le dĂ©tail de ce framework. Rappelons que les frameworks ORM se basent sur JPA, une spĂ©cification (c'est-Ă -dire des rĂšgles Ă suivre). Les frameworks vont ensuite implĂ©menter cette spĂ©cification (suivre ces rĂšgles) et fournir un code utilisable.
Hibernate est une implĂ©mentation JPA (tout comme EclipseLink ou OpenJPA). Spring Data JPA nâest pas tout Ă fait une implĂ©mentation JPA. Câest une autre couche entre la spĂ©cification JPA et une implĂ©mentation JPA. Cela sâappelle une abstraction.
Visuellement, on pourrait représenter cette structure selon une pile comme dans le schéma suivant :

JPA est en haut de la pile car câest la spĂ©cification.
Spring Data JPA vient ensuite, câest un niveau dâabstraction, opĂ©rationnel.
Hibernate est une implĂ©mentation, câest donc le plus bas niveau.
Pourquoi Spring Data JPA existe alors ? Hibernate ne suffit pas ?
Spring Data JPA existe en raison du leitmotiv de Spring : nous simplifier la vie !
Utiliser une implĂ©mentation JPA comme Hibernate nâest pas forcĂ©ment une tĂąche aisĂ©e. Cela demande dâapprĂ©hender beaucoup de codes.
Spring Data JPA vient donc s'interfĂ©rer entre la spĂ©cification JPA et Hibernate pour nous permettre dâutiliser cette implĂ©mentation sans devoir en apprendre toutes ses complexitĂ©s. Et bien Ă©videmment, en maintenant la performance !
Magnifique, non ? 
Maintenant que tout est clair (enfin je lâespĂšreÂ
), nous sommes prĂȘts Ă tester la connexion Ă la base de donnĂ©es. Rien de plus simple, nous allons dĂ©marrer notre projet et observer son comportement. Ce dernier nous rĂ©vĂšlera si la connexion Ă la base de donnĂ©es est opĂ©rationnelle ou non.
Je vous invite à ouvrir un invite de commande, à vous placer dans le répertoire du projet, puis à taper la commande Maven : mvn spring-boot:run.
Si votre configuration est valide, vous devriez obtenir un rĂ©sultat qui ressemble au suivant avec un âBUILD SUCCESSâ. 

Dans le cas oĂč la configuration est erronĂ©e ou si la connexion a Ă©chouĂ©, vous aurez un âBUILD FAILUREâ.
Jâen ai simulĂ© un pour lâexemple, en supprimant toutes les propriĂ©tĂ©s du fichier application.properties :

Je ne peux pas vous simuler tous les cas dâerreurs, mais soyez bien vigilant Ă lâURL, au nom dâutilisateur et au mot de passe, et bien Ă©videmment Ă ce que votre base de donnĂ©es soit dĂ©marrĂ©e !
Avant de conclure la premiĂšre partie de ce cours, je vais vous montrer une derniĂšre chose.
Mettons-nous en situation de production. La base de donnĂ©es est en production et lâapplication Java Ă©galement.Â
Jusque lĂ , ça va ! Mais voilĂ , les administrateurs systĂšme vous informent que votre prĂ©cieuse base de donnĂ©es va ĂȘtre dĂ©placĂ©e sur un autre serveur. Câest une catastrophe ! 
Je ne vois pas trop ce quâil y a de grave lĂ -dedans ?
Bon dâaccord, je surrĂ©agis peut-ĂȘtre. Cependant, nous avons bien un problĂšme !
Dâaccord, mais lequel ?
La mise en production de votre application Spring Boot signifie que vous avez packagĂ© lâapplication dans un JAR. Ce JAR a ensuite Ă©tĂ© exĂ©cutĂ© sur un serveur de production.
Et ce mĂȘme JAR embarque la configuration dâaccĂšs Ă la base de donnĂ©es ! Si la base de donnĂ©es change de serveur, alors lâURL dâaccĂšs devra certainement ĂȘtre mise Ă jour. Et câest lĂ le problĂšme : une fois le JAR construit, on ne peut plus accĂ©der au fichier application.properties qui est embarquĂ© dedans !
Bon certes, alors je modifie le fichier application.properties dans le projet, je re-construis le JAR et je remplace lâancien, non ?
IdĂ©e valide, oui, mais ne trouvez vous pas que câest un peu complexe pour une simple mise Ă jour dâun fichier de propriĂ©tĂ©s ? 
Laissez-moi vous proposer quelque chose de plus efficace ! Un peu avant, je vous avais présenté le fichier application.properties comme étant une source de propriétés pour Spring.
Spring Boot, par défaut, prend en compte de nombreuses autres sources de propriétés, comme :
Des arguments via la ligne de commande.
Les variables dâenvironnement.
Des fichiers de propriétés externes au JAR packagé.
Je vais donc vous montrer comment externaliser la configuration via 2 méthodes :
Avec les variables dâenvironnement.
Via un fichier de propriétés externes au JAR.
Ces 2 mĂ©thodes font partie des solutions pour Ă©viter de reconstruire le JAR Ă chaque mise Ă jour nĂ©cessaire de la configuration (comme lorsquâon dĂ©place la base de donnĂ©es sur un autre serveur !).
Retrouvez-moi dans le screencast ci-dessous :
Alors, quâen pensez-vous ? Assez simple, non ?
Je dois reconnaĂźtre que ce genre de facilitĂ© mâa particuliĂšrement fait apprĂ©cier Spring Boot. Ce nâest pas surprenant que ce soit un framework incontournable en Java actuellement !
Reprenons ces 2 méthodes :
Quel que soit votre systĂšme dâexploitation, vous pouvez ajouter de nouvelles variables dâenvironnement. Dans mon cas, sur Windows jâai utilisĂ© le menu âModifier les variables dâenvironnement systĂšmeâ. Puis pour tester, jâai ajoutĂ© une variable nommĂ©e âspring.datasource.passwordâ avec la valeur ârootâ. Bien Ă©videmment, cela peut ĂȘtre fait avec toutes les propriĂ©tĂ©s.
Et voilĂ , le tour est jouĂ© ! Votre application ira lire les variables dâenvironnement au dĂ©marrage, et la connexion Ă la base de donnĂ©es sâeffectuera sans problĂšme !
La documentation de Spring Boot indique que lâon peut placer le fichier application.properties dans un rĂ©pertoire config situĂ© dans le rĂ©pertoire oĂč lâapplication est exĂ©cutĂ©e.
Lâarborescence donnerait alors quelque chose comme :
root_folder/
config/
application.properties
dataLayer.jar
Au dĂ©marrage du JAR, lâapplication ira lire le fichier, et les propriĂ©tĂ©s seront prises en compte. VoilĂ une excellente façon dâexternaliser la configuration. Câest ma prĂ©fĂ©rĂ©e. 
Enfin, il est Ă©galement intĂ©ressant de noter que lâexternalisation de la configuration renforce la sĂ©curitĂ© de votre dĂ©veloppement.
Rappelons dâailleurs que bien souvent, le plus prĂ©cieux au sein dâune application ce nâest pas le code, mais bien les donnĂ©es !
Vous comprenez donc quâĂ©crire en dur dans le code les informations de connexion Ă la base de donnĂ©es est une mauvaise pratique ! Lâexternalisation de la configuration est la solution Ă cette mauvaise pratique. 
Câest ainsi que nous terminons ce chapitre et la premiĂšre partie du cours.
La connexion à la base de données est facilitée par Spring.
La configuration doit contenir au minimum :
l'URL ;
le nom d'utilisateur du compte BDD ;
le mot de passe du compte utilisateur ;
le dialecte SQL.
La configuration peut ĂȘtre externalisĂ©e en dehors du JAR packagĂ©, par exemple :
dans des variables dâenvironnement ;
dans un fichier applications.properties placé dans un répertoire config.
Pour apprendre à interagir avec la base de données, suivez-moi dans la deuxiÚme partie du cours ! 