在java.util.Date或java.sql.Date之间进行选择

时间:2014-07-09 09:38:34

标签: java jpa entity

我应该使用java.util.Date还是java.sql.Date?

我有一个VisualFox数据库,我使用适当的jdbc类型4驱动程序使用IntelliJ Idea向导检索实体。

ide(或驱动程序)已将日期字段创建为Timestamp。但是,日期字段不是时间戳,而是日期字段,它们仅存储年,月和日。

所以我想知道是否应该切换到java.util.Date或java.sql.Date。乍一看,我认为java.sql.Date应该是合适的,但它有许多声明为弃用的方法。

3 个答案:

答案 0 :(得分:1)

一般情况下,我认为使用java.util.Date是明智的,因为您可以在程序中的任何位置使用它,而无需转换类型或使用特定于SQL的代码污染应用程序。

我不知道' java.sql.Date'会更合适。

答案 1 :(得分:1)

嗯,根据这个article,您可以使用javax.sql.Date而不使用@Temporal注释,这样可以节省一些代码。但是java.util.Date更易于在整个应用程序中使用。

所以我会用

@Column(name = "date")
@Temporal(TemporalType.DATE)
private java.util.Date date;

答案 2 :(得分:0)

根据Java doc,建议根据底层数据库使用适当的Date类型。 但是,使用Java 8,已经提供了java.time包下的一组丰富的类,如果应用程序是用Java 8编写的,则必须使用它。

类javaxjava.sql.Date扩展了java.util.Date,对miliseconds容器进行了少量更改,以便它可以有效地支持Database DATE类型。这样,我们可以保存从实体类输入的@Temporal注释。

但是,java.util.Date可以在整个应用程序中用于更好的可伸缩性,以便它可以很容易地用于存储时间和日期。