HibernateとMySQLの作成タイムスタンプと最終更新タイムスタンプ 質問する

HibernateとMySQLの作成タイムスタンプと最終更新タイムスタンプ 質問する

特定の Hibernate エンティティについては、その作成時刻と最終更新時刻を保存する必要があります。これをどのように設計しますか?

  • データベースではどのようなデータ型を使用しますか (MySQL を想定し、JVM とは異なるタイムゾーンにある可能性があります)? データ型はタイムゾーンを認識しますか?

  • Java ではどのようなデータ型を使用しますか ( Date、、、...)?Calendarlong

  • タイムスタンプの設定は、データベース、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または、クラスのアノテーションを使用して、イベント コードを外部クラスに配置することもできます。

おすすめ記事