27. 論理削除とは
個人的に、
結果を
State Machineの プラグイン
fukabori.fm
の
ORM では、State Machine
で
EclipseLink の 論理削除の 実現方法
EclipseLink だとEclipseLink State Machine
はEclipseLink Soft Delete
に
以下の
- EclipseLink/Examples/JPA/SoftDelete - Eclipsepedia
- notesOfMyJavaCareer: Soft Delete with JPA and EclipseLink
読んだ
@AdditionalCriteria を 使用して、 表示対象の データを 制限する
@AdditionalCriteria を
@Entity @AdditionalCriteria("this.status <> 'deleted'") public class Employee { @Id @Column(name="EMP_ID") private long id; @Basic private String status; // This is optional, as a query-key could also be used. }
@Customizer を 使って、 削除時の 動作を 変更する
Entity クラスに、@Customizer
をDescriptorCustomizer
の
@Entity @Table(name="ITEM") @Customizer(SoftDeleteCustomizer.class) public class Item { //// }
DescriptorCustomizer
の
public class SoftDeleteCustomizer implements DescriptorCustomizer { public void customize(ClassDescriptor descriptor) { descriptor.getQueryManager() .setDeleteSQLString("Update ITEM set ITEM_STATUS = 2 where ITEM_ID = #ITEM_ID"); }
DescriptorQueryManager#setDeleteSQLString
で
DescriptorQueryManager の
eclipselink/DescriptorQueryManager.java at master · eclipse-ee4j/eclipselink
DBへの
Java での ステートマシン
EclipseLink では、
- j-easy/easy-states: The simple, stupid state machine for Java
- Spring Statemachine で
ステートマシンを 処理 - なんとなくな Developer の メモ
Entity クラスの
Django の 論理削除の 実現方法
Django には、State Machine
も、Soft Delete
も
State Machine
Django State Machine
で有限 State Machine
の
上記のdjango-fsm
が
* viewflow/django-fsm: Django friendly finite state machine support
django の
Soft Delete
Django Soft Delete
で
deleted_at
と
ChangeSet
と
- exploreshaifali/django-softdelete-it: Add soft-delete functionality to desired models.
UUID のフィールドを 使って、 論理削除 を 実現しています。
個人的にdjango-fsm
を
参考
ステートマシンって
以上です。
コメント