Intégration des objets Java.time avec les bases de données JDBC et SQL
Cet article montre comment intégrer de manière transparente java.time.LocalDate
des objets aux bases de données SQL à l'aide de Java Database Connectivity (JDBC).
JDBC 4.2 et versions ultérieures : interaction directe
Les pilotes JDBC modernes (JDBC 4.2 et supérieur) offrent une prise en charge directe des java.time
objets. Les pilotes comme le pilote de base de données H2 utilisent les méthodes setObject
et getObject
pour un transfert de données efficace. Insérer un LocalDate
implique d'utiliser PreparedStatement.setObject
, en spécifiant le type d'objet approprié. La récupération utilise ResultSet.getObject
, spécifiant de la même manière le type de retour attendu pour une sécurité de type améliorée.
Gestion des pilotes JDBC non conformes
Pour les pilotes plus anciens qui ne sont pas conformes à JDBC 4.2, vous devrez tirer parti des classes date-heure java.sql
héritées. Convertissez LocalDate
en java.sql.Date
en utilisant java.sql.Date.valueOf(myLocalDate)
. À l’inverse, convertissez le java.sql.Date
récupéré en LocalDate
en utilisant java.sql.Date.toLocalDate()
.
Exemple illustratif (base de données H2)
L'exemple suivant présente des approches conformes et non conformes utilisant la base de données H2 :
<code class="language-java">// JDBC 4.2 compliant approach LocalDate today = LocalDate.now(); preparedStatement.setObject(1, today.minusDays(1)); // Non-compliant approach java.sql.Date mySqlDate = java.sql.Date.valueOf(myLocalDate); preparedStatement.setDate(1, mySqlDate);</code>
Exploiter le framework java.time
Le framework java.time
(disponible à partir de Java 8) remplace les anciennes classes date-heure. L'utilisation directe d'objets java.time
avec des interactions de base de données est recommandée, en particulier avec les pilotes compatibles JDBC 4.2. Notez que de nombreux pilotes JDBC et ORM modernes (comme Hibernate 5.0 ) fournissent une prise en charge native des java.time
types.
Considérations clés
java.time.LocalDate
correspond au type de données SQL DATE
.java.time
les fonctionnalités à Java 6 et 7.java.time
intégrée ; ThreeTenABP adapte ThreeTen-Backport pour les versions antérieures d'Android.Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!