Skip to content

Latest commit

 

History

History
executable file
·
31 lines (22 loc) · 1.36 KB

base-object.md

File metadata and controls

executable file
·
31 lines (22 loc) · 1.36 KB

BaseObject

com.co.hm.base.domain.BaseObject

BaseObjectには全てのモデルに対して必須な属性が3つあります。

  • id : レコードのID、値はデータベースが作成します : AUTO_INCREMENT
  • created_at : レコードの作成時間、値はデータベースが作成します: DEFAULT CURRENT_TIMESTAMP
  • updated_at : レコードの最新変更時間、、値はデータベースが作成し、更新します: DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

アプリケーションのモデルはBaseObjectから受け継ぎますので上記の属性を再度定義する必要ありません。

@MappedSuperclass: BaseObject の属性はこのクラスから受け継ぐ子クラスのmappingに適用されます。DBにはこの対象用のテーブルがありません。

@Data
@MappedSuperclass
public abstract class BaseObject implements Serializable {

  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  @Column(name = "id", columnDefinition = "INT(11)")
  private long id;

  @Column(name = "created_at", updatable = false, columnDefinition = "TIMESTAMP default CURRENT_TIMESTAMP")
  private Date createdAt;

  @Column(name = "updated_at", columnDefinition = "TIMESTAMP default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP")
  private Date updatedAt;

}