Décrit l’utilisation de la nouvelle API Date et Time de Java 8 avec des classes persistantes
Java 8 nous apporte de nouvelles classes de gestions de dates bien plus pratiques que les anciennes. Il pourrait être intéressant de les utiliser dans la définition de nos classes persistantes.
Avant la version 8, nous disposions de deux classes, java.util.Date et java.util.Calendar pour gérer les dates et le temps dans nos applications Java. La première, avait déjà la plupart de ces méthodes notés comme déprecated (obsolètes) et ne devait plus servir que de simple conteneur de données dates et nous devions utiliser Calendar pour effectuer toutes les manipulations et calcul par rapport à un calendrier. C’était pour cette raison, que de nombreux développeurs utilisaient la librairie tierce : JodaTime.
Remarque : Il existe également dans l’API java les classes java.sql .Date, java.sql .Time et java.sql.TimeStamp qui encapsulent les types SQL correspondant. Personnellement, je ne les utilisent pas pour ne pas être lié à des types spécifiques au SQL.
Heureusement, nous disposons maintenant d’une nouvelle API intégrée à Java SE. Cette API dispose à la fois de classes pour gérer le temps machine et de classes pour le temps humain.
Ces nouvelles classes sont définies dans le package java.time de Java 8. Dans cet article, je ne décrirais pas ces différentes classes mais je me contenterais de vous montrer comment les utiliser comme attribut de classes persistantes et JPA .
Voyons d’abord un exemple de classe persistante utilisant un champ date avant Java 8.
Cela pourrait ressembler à au code suivant :
Remarque : L’annotation @Temporal permet de préciser avec quel type SQL nous voulons mapper notre attribut avec les types TemporalType.DATE, TemporalType.TIME et TemporalType.TIMESTAMP.
Voici un extrait de la méthode main() qui a pour but de créer la base de données et d’ajouter un enregistrement de test.
Si l’on demande au framework de persistance de générer la base à partir de notre classe, nous voyons que l’attribut java est bien mappé avec un type date SQL DATE.
Dans le cadre d’un projet WEB avec JSF, vous devrez également définir un FacesConverter pour ces nouveaux types.
Les différents exemples de cet article ont été testés avec JavaDB et MySQL en utilisant l’implémentation de JPA 2.1 de EclipseLink.
Crée par: chris
Créé le: 3 mai 2015
Modifié le: 1er juillet 2015
Nombre de visites: 553
Popularité: 5 %
Popularité absolue: 1
2003-2023 LePpf
Plan du site
| Se connecter |
Contact |
RSS 2.0 |
Sur YouTube
Visiteurs connectés : 3
Nombre moyen de visites quotidiennes sur le site: 223