DTO
Data Transfer Object
#WIP
人や文献によって意味が揺れている #??
最初(に近い)の出典を知りたい #??
外から変更可能
どういう意味 #??
異なるレイヤー間のデータの受け渡しに使う
Bounded Contextの内部で定義されたobjectと似て非なる
serializeできるようにデザインされている
Domain ObjectがBounded Contextをまたぐ際に、DTOに変換され、
Contextの外側でJSONなどにserializeされる、
次のContextは、JSONをdeserializeしてDTOに変換してContext内部に取り入れ、
内部では、DTOをDomain Objectに変換して扱う
なんでわざわざDTOを経由するのかわからん #??
一気にJSONなどにserializeするのではだめなのか
依存性逆転させたいから?
違うか。それなら単にInterfaceを用意すればよいだけ
https://gyazo.com/92a17302639b68ab7e00999a6a543491
このDomain間って外部システムで、通信しているのか #??
JSでの開発が当たり前だとより分かりづらい気もするmrsekut.icon
そもそもやり取りしているものがJSONがなので
参考
VO, DTO, POSO, DAO, Entity の違い - Qiita
/kawasima/DTO史
https://www.yo1000.com/ddd-transcript#:~:text=とおりである。-,DataTransferObject,-コントローラーから参照
DTOを作らないなら、Entityを持ち運ぶことになるが、
そうなると、境界の外でEntityに含まれるロジックを実行できてしまう
すると、Business LogicがApplication層の外でも実行できてしまい、layerの責務が曖昧になる
だから、Entityとほぼ同じ構造のシリアライズ可能なものを仲介する、という感じか?
だとすれば、かなりOOP前提だなmrsekut.icon
そもそもplaneなdataを持ち回している関数型ならそんな問題は起きない
https://ja.wikipedia.org/wiki/Data_Transfer_Object
DTOとは自身のデータへの格納と取り出し機能しか持たないオブジェクトのことです ref
https://panda-program.com/posts/graphql-and-data-transfer-object
texta.fm
https://podcasts.apple.com/jp/podcast/texta-fm/id1530076592?i=1000533798406
DPO
Domain Payload Object
/miyamonz/Data Transfer Object