スプリングガイドの使用-共通列の監査設定


商品を売買できる宿屋を建てることを想定します.多くの場合、売り手が商品を登録する場合、消費者が登録する場合、商品に対する問い合わせを残す場合など、そのエンティティの登録時間、すなわちinsert時点を記録する必要がある.

**このように、テーブルやサービスでいくつかの機能を繰り返す場合、主に監査機能が使用されます。


参考までにAuditing機能はJPAから提供されています.
では、생성시간수정시간の2種類をレビューに設定し、DBに登録しましょう.

1.アプリケーションクラスに@EnableJpaAuditingを追加


Springプロジェクトを実行する場合、@SpringBootApplication操作を含むアプリケーションクラスがデフォルトです.
レビュー機能を使用するには、次のようにクラスに@EnableJpaAuditing宣言を追加する必要があります.

2.汎用抽象クラスの作成


次に、一般的なカラムを定義する抽象クラスを作成します.
生成時間がcreatedDate、修正時間がmodifiedDateのフィールドをそれぞれ記入した.
その後、生成時間は@CreatedDate、修正時間は@LastModifiedDateとする.
JPAはこれを確認し、@CreatedDateと宣言されたフィールドは、各tupleが生成されたときにその時間を記録し、@LastModifiedDateと宣言された場合、各tupleが変更されるたびに更新時間を記録する. - @MappedSuperclass:エンティティがCommonTimeを継承すると、クラスのフィールドが自動的にカラム形式で作成されます(createdDate,modifiedDate).- @EntityListeners(AuditingEntityListener.class):CommonTimeクラスはレビューを許可します. - @Getter:以降の生成時間の取得、時間値の変更に使用します.Getterがない場合は、プライベートフィールドであるため、値を取得できません. - updatable=false, insertable=false:updataableをfalseに設定すると、カラムは変更されません.作成時間については、作成後に一度も変更されないため(予期せぬ変更はできません)、falseに設定する必要があります.
次にinsertableをfalseに設定すると、カラムが挿入から除外されることを示します.簡単に言えばDBのinsert文から除外します.変更時間の場合は、エンティティを挿入するときにfalseに設定する必要があります.これは空である必要があります.

3.必要なクラスから引き継いで使用

public class Gallery extends CommonTime {...}
最後に、上記のように、継承したいクラスごとにCommonTimeを継承するだけで完了します.
実際、このエンティティークラスではcreatedDTとupdatedDTは定義されていませんが、一緒にDBに昇格していることがわかります.