前提・実現したいこと
Spring BootでJPAを利用し、DBへアクセスしデータを取得したいのですが、下記サイトのソースコードを参照しているときに疑問に思いました。(https://qiita.com/opengl-8080/items/265f9f66a65e966678cb)
private Date date変数は、java.util.Date型ですが、DBからデータを取得する際にjava.sql.Date型ではないのにも関わらず、SQLのDATE型のデータが格納されるのはなぜでしょうか。
下記URLによると、SQL のDATEデータ型は、Javaのjava.sql.Date型とマッピングされるようです。
(https://docs.oracle.com/javase/jp/1.3/guide/jdbc/spec/jdbc-spec.frame8.html)
エンティティにデータを格納するときに自動でjava.sql.Date→java.util.Date型に変換されるのでしょうか。
また以下のURLの結論によるとjava.sql.Dateは、「JDBCで一般的に使用されます。」とのことですが、SpringでJPAを使用しDBにアクセスする場合は、エンティティにjava.sql.Dateは使用しないのでしょうか。
(https://www.baeldung.com/java-util-date-sql-date)
java.util.Dateの利用が一般的であれば、java.sql.Date→java.util.Dateへの変換処理を書かずに済むのでそうしたいのですが、java.sql.Dateを利用するメリットは、存在するのでしょうか。
長くなりましたが、以上よろしくお願いいたします。
該当のソースコード
Java
1package sample.javaee.jpa.entity.mapping; 2 3import java.util.Date; 4import javax.persistence.Entity; 5import javax.persistence.GeneratedValue; 6import javax.persistence.GenerationType; 7import javax.persistence.Id; 8import javax.persistence.Temporal; 9import javax.persistence.TemporalType; 10 11@Entity 12public class Kikuri { 13 14 @Id @GeneratedValue(strategy = GenerationType.IDENTITY) 15 private Long id; 16 17 @Temporal(TemporalType.DATE) 18 private Date date; 19 @Temporal(TemporalType.TIME) 20 private Date time; 21 @Temporal(TemporalType.TIMESTAMP) 22 private Date datetime; 23 24 public void setDate(Date date) { 25 this.date = this.time = this.datetime = date; 26 } 27}
補足情報(FW/ツールのバージョンなど)
DB:PostgreSQL
DB接続:JDBCドライバー

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/14 13:25