4

java.util.Calendarエンティティには、次のようにマッピングされた特定のデータベース日付マッピングがあります。

@Temporal( TemporalType.TIMESTAMP )
@Column( name = "END_DATE" )
private Calendar end;

これは現在、日付と時刻の情報を含む Oracle DATE 型にあることに注意してください。私は現在、単純なjava.util.Dateものでは十分ではない(またはよりうまく機能する)理由がわかりません。

Q:

データベースの日時列をjava.util.Calendarではなくとしてマッピングすることの利点と欠点は何java.util.Dateですか?

の欠点の 1 つCalendarは、JSF フォームがある場合です。

<p:calendar value="#{managerBean.selectedEntity.end.time}"
            ...>
</p:calendar>

を使用する必要がありますend.time。表示するときは問題ありませんが、送信時にCalendarフィールドendがデフォルトで null (オプション) である場合、たとえば新しい空白のエンティティでは、送信は例外で失敗します:

javax.el.PropertyNotFoundException: /view/blaMasterGrid.xhtml @138,62 value="#{managerBean.selectedEntity.end.time}": Target Unreachable, 'null' returned null at 
.
.
.

では、マッピングをjava.util.Calendar超える利点は何ですか?java.util.Date

4

1 に答える 1

2

多数の java.util.Date 関数が非推奨になっているため、アプリケーションでこれらの変数に対して多くの操作を実行する必要がある場合は使用しないでください。java.util.Date または java.util.Calendar の代わりに Joda Time を使用するのが最も望ましい方法です。

java.util.Date には、コンストラクターである gettime() と settime() という 3 つの非推奨関数だけが残されています。これは、コードを進めるにつれて問題を引き起こす可能性があります。単純なマッピングのためには、java.util.Date で十分です。

于 2012-12-19T09:59:31.373 に答える