web-dev-qa-db-fra.com

Choisir entre Java.util.Date ou Java.sql.Date

Devrais-je utiliser Java.util.Date ou Java.sql.Date?

J'ai une base de données VisualFox et j'ai récupéré les entités avec l'assistant d'IntelliJ Idea en utilisant un pilote de type 4 jdbc approprié.

L'ide (ou le pilote) a créé les champs de date sous forme d'horodatage. Cependant, les champs de date ne sont pas des horodatages mais des champs de date, ils ne stockent que l'année, le mois et le jour.

Je me demande donc si je devrais passer à Java.util.Date ou Java.sql.Date. À première vue, j’ai pensé que Java.sql.Date devrait être celui qui convient, mais il a de nombreuses méthodes déclarées obsolètes.

14
Carlos Goce

Selon cet article , vous pouvez utiliser javax.sql.Date sans annotation @Temporal, ce qui vous permet d’économiser du code. Cependant, Java.util.Date est plus facile à utiliser dans l’ensemble de votre application.

Donc j'utiliserais 

@Column(name = "date")
@Temporal(TemporalType.DATE)
private Java.util.Date date;
1
Petr Mensik

En général, il est conseillé d'utiliser le Java.util.Date, car vous pouvez l'utiliser n'importe où dans votre programme sans convertir le type ou polluer votre application avec du code spécifique à SQL.

Je ne suis pas au courant d'un scénario dans lequel 'Java.sql.Date' conviendrait mieux. 

1
kostja

Selon la documentation Java, il est suggéré d'utiliser le type de date approprié dans la base de données sous-jacente. Cependant, avec Java 8, un ensemble riche de classes sous le package Java.time a été fourni et doit être utilisé si l'application est écrite avec Java 8.

La classe javaxjava.sql.Date étend Java.util.Date avec des modifications mineures pour le conteneur miliseconds afin qu'il puisse prendre en charge le type Database DATE. Ceci, nous pouvons enregistrer le type d'annotation @Temporal de la classe entity.

Toutefois, Java.util.Date peut être utilisé pour une meilleure évolutivité dans l’ensemble de l’application, de sorte qu’il puisse être facilement utilisé pour stocker l’heure avec la date.

0
Sandeep Kumar