issues
search
aloerina01
/
til
1日1つだけ強くなる
6
stars
0
forks
source link
2019/09/05 ORM
#127
Open
aloerina01
opened
5 years ago
aloerina01
commented
5 years ago
ORMは不快なアンチパターン | To Be Decided
ORMは一般的に、DBとの対話を隠蔽してオブジェクトとしての対話のインターフェースを提供するもの
この思想がオブジェクト思想に反していて気に食わない
OOPにおいて、ふるまいは1つのオブジェクトから提供されるべき
でもORMが出てくると、ある値を取得するために「ORM」と「オブジェクト」の2つを触ることになる
言い換えると、リレーショナルモデル(DB接続のふるまい等)はオブジェクト内にカプセル化されていない、ということ
なのでORMはSQLを隠蔽するのではなく
アプリケーション全体に撒き散らしている
......という内容と、代替案のサンプルコードが記載された記事だったけれど…
サンプルコードは「DBの構造=オブジェクトの構造」となりやすい例だったので、もう少し複雑なケースも見てみたい
レイヤードアーキテクチャ的には「SQLと対話するレイヤーをアプリケーション全体に撒き散らす」はあっているような気がする
カプセル化したいってのはわかるけど、その生成方法が複雑な場合に生成ロジックを外出しするFactoryパターンとかもあるわけだし、リレーショナルモデル部分を外出したのがORMと考えればしっくりくるような…?
ちゃんと理解できてない可能性もあるので少ししたらまた読み返したい。
ORMは不快なアンチパターン | To Be Decided
ちゃんと理解できてない可能性もあるので少ししたらまた読み返したい。