Table des matières
Ce tutorial a pour objet de présenter la configuration de base d'un projet JPA dans Eclipse, et de créer une première entité JPA. Il utilise une connexion Derby de type embedded, et EclipseLink comme implémentation JPA.
Un projet JPA a besoin de se connecter à une base de données. Nous avons déjà présenté une façon de créer une connexion à une base Derby dans le tutorial Premiers avec Derby dans Eclipse, et nous en présentons une autre ici. On peut donc utiliser soit l'une soit l'autre.
Une connexion de type embedded est différente d'une connexion classique. La première étape est la même que pour toutes les connexions : sélectionner la rubrique New... du menu contextuel de la vue Data Source Explorer.
On sélectionne le type de base de données : Derby dans le panneau qui s'ouvre.
Ces deux premières étapes étaient les mêmes que pour la création d'une connexion classique à une base Derby. C'est à cette troisième étape que les différences commencent. Sur le panneau suivant, on sélectionne le pilote Derby Embedded JDBC Driver. Les fichiers de la base de données sont alors stockées dans un endroit que l'on peut choisir, qui va influencer l'URL de la base. Dans ce panneau, il nous faut donc choisir donc un emplacement de fichiers.
Le dernier panneau est juste un rappel des paramètres que nous avons entrés.
Notre nouvelle connexion apparaît enfin dans la vue Data Source Explorer, comme n'importe quelle autre connexion.
Cette source de données est prête à être utilisée dans le projet JPA que nous allons créer maintenant.
La création d'un projet JPA commence de la même manière que n'importe quel autre projet Eclipse. Le panneau New Project permet de sélectionner JPA Project.
S'ouvre alors un deuxième panneau qui permet de préciser les choses.
Le nom de ce projet et la version de Java utilisée.
La version de l'API JPA utilisée. Ici on sélectionne JPA 2.0.
Enfin, il est possible d'ajouter ce projet à un EAR, point que nous ne couvrons pas dans ce pas à pas.
L'étape suivant permet de préciser les répertoires source de notre projet.
Enfin, il faut encore sélectionner l'implémentation JPA que notre projet va utiliser. Il s'agira typiquement d'Hibernate ou d'Eclipselink, cette dernière implémentation étant l'implémentation de référence.
L'implémentation choisie pour notre exemple est EclipseLink 2.3.x, qui n'est pas installée dans les dépendances de notre projet. Pour ce faire, il faut cliquer sur l'icône en forme de disquette à droite dans le cadre JPA implementation.
Ce panneau nous permet de choisir également la base de données utilisée. On sélectionne ici Derby Embedded, connexion que nous venons de créer. Il est alors possible de définir ici un autre jeu de paramètres que celui utilisé par cette connexion, notamment le schéma cible de l'application.
Enfin, on peut choisir de laisser EclipseLink découvrir les entités JPA de notre projet, ou de
les lister dans le fichier persistence.xml
. C'est cette deuxième option que l'on
choisit ici.
Avant de terminer, Eclipse nous propose de télécharger la librairie EclipseLink 2.3. Ce téléchargement se fait en trois temps.
Une fois ce téléchargement terminé, notre projet est prêt à être créé.
Eclipse nous propose alors de basculer sur la perspective JPA, ce que l'on accepte.
La structure de notre projet est la suivante, visible dans la vue Project Explorer.
Notre projet est maintenant prêt à accueillir nos premières entités.
On se propose dans cette partie de créer une première entité JPA. En première approche, une entité JPA est un bean Java classique, annoté, et qui doit posséder une clé primaire. On peut générer de telles classes automatiquement avec les outils fournis par Eclipse.
On commence la création d'une entité JPA en sélectionnant la rubrique JPA Entity sous l'icône New Entity. Attention, cette frise d'icônes n'est visible, par défaut, que sur la perspective JPA.
Le premier panneau qui s'ouvre alors nous permet de fixer la classe de notre entité, et éventuellement sa super-classe. Si elle possède une super-classe, alors on peut préciser le type de stratégie pour le mapping de l'héritage.
Le deuxième panneau permet de fixer trois choses.
Le nom de l'entité JPA que l'on est en train de créer. Par défaut il s'agit du nom complet de la classe. Si ce nom doit être utilisé dans des requêtes JPQL, il est souvent utile d'en choisir un plus simple.
Le nom de la table associée à cette entité.
La liste des champs persistants de cette classe, c'est-à-dire ceux qui sont associés à des colonnes de la table dans laquelle sera enregistrée cette entité.
On peut également fixer la façon dont cette classe sera annotée : pas ses champs ou ses getters.
En cliquant sur le bouton Finish, Eclipse crée notre classe, telle qu'elle a été paramétrée.
Cela dit, les choses ne sont pas tout à fait finies. Effectivement, Eclipse vérifie automatiquement que notre entité est valide, et, notamment, que sa table associée existe bien.
Nous sommes partis d'un exemple vide, donc cette table n'existe pas. Il serait facile de la créer manuellement, mais Eclipse nous propose de le faire pour nous. Il faut pour cela aller chercher la rubrique JPA Tools du menu contextuel de notre projet JPA. Cette rubrique possède une sous-rubrique Generate Tables From Entities..., qui va nous faire le travail.
Là encore Eclipse nous demande si l'on veut créer nos tables en base directement, ou créer un fichier de commandes SQL à exécuter, sans toucher à la base.
Dans notre exemple on choisit de créer directement les tables en base, ce qu'Eclipse va nous faire.