特定の Hibernate エンティティについては、その作成時刻と最終更新時刻を保存する必要があります。これをどのように設計しますか?
データベースではどのようなデータ型を使用しますか (MySQL を想定し、JVM とは異なるタイムゾーンにある可能性があります)? データ型はタイムゾーンを認識しますか?
Java ではどのようなデータ型を使用しますか (
Date
、、、...)?Calendar
long
タイムスタンプの設定は、データベース、ORM フレームワーク (Hibernate)、アプリケーション プログラマーのどれに責任を持たせますか?
マッピングにはどのような注釈を使用しますか (例
@Temporal
)?
私は実用的なソリューションだけでなく、安全で適切に設計されたソリューションも探しています。
ベストアンサー1
JPA アノテーションを使用している場合は、イベント フックを使用して次の操作を実行@PrePersist
できます。@PreUpdate
@Entity
@Table(name = "entities")
public class Entity {
...
private Date created;
private Date updated;
@PrePersist
protected void onCreate() {
created = new Date();
}
@PreUpdate
protected void onUpdate() {
updated = new Date();
}
}
@EntityListener
または、クラスのアノテーションを使用して、イベント コードを外部クラスに配置することもできます。