※本エントリの内容は「たぶんコレでいいんじゃない?むしろ違ったら教えて下さい」的な内容です。
DBにエンティティを永続化するというシチュエーションを考える。
例えばPersonというエンティティとしよう。
これをDBに保存するなら、PrimaryKeyが必要だ。ま、普通はIDを付けるでしょう。
さて、問題は、「ID採番前のPersonはどう表現するの?」という話。
案1. id = 0 とか、負の数を「採番前」ということにする
冗談です。
案2. idの型をOptionにする
確かに「IDの有無」を表現はできてるが、これだと例えば「これから採番するPersonのリスト」のような型が作りにくいです。
案3. オブジェクト指向っぽく行けばいいんじゃない?
いろいろ考えたんだけど落ち着いたのがここ。あんまカッコイイ答えじゃないんだけどね。
ただ、「case classにする」ってところだけは守るという制約でScalaで書こうと思うと、やっぱりちょっと考えないといけない。
で、こうなった。id以外のメンバは何回も書いてるのが正直気に入らない。でも、使うときは多分これが一番気持ちよく使えると思う。
もっと良い書き方募集。
0 件のコメント:
コメントを投稿