多層CRUD

二層のCreateとDelete

日本の業務用システムの多く?には「下書き」機能と「論理削除」機能があります。
「下書き」とは、一応データとしては起こすものの、まだ入力途中なので公開はしたくないという状態です。これは『Create済みではあるもののReadを許さない状態』と捉えることもできますが、データの作成者は見ることができる(できないと困る)ので、むしろ『物理的には存在するが論理的には存在しない状態』といったほうが適切かもしれません。
これと対を成すのが「論理削除」です。やはり『物理的には存在するが論理的には存在しない状態』と表現することができます。
言い換えれば、エンティティ層(上記で言うところの"物理的")とアプリケーション層(同じく"論理的")、それぞれの層でCreate/Deleteを意識すべきであるということです。

じゃあReadとUpdateは?

エンティティ/アプリケーションという切り口から見るならば、Readはエンティティからアプリケーションへ渡す操作、Updateはアプリケーションからエンティティへ格納する操作と言えます。


Railsでブレイクした"CRUDを自動生成するツール(フレームワーク)"は「プロトタイピングに向いている」「マスタ管理にしか使えない」というのが定説だったが、階層を意識したツールが出てきたらその状況は変わるかもしれない。