DAOとRepositoryの違いとは何かを考えた
こんばんは、最近銀行の手数料に悩まされプリペイドカード提携を考えているが、浪費の歯止めが効かなさそうでチキっているふぇりです。
考えたきっかけ
読書記録管理アプリを作成している際に、ふと自分のコードを見て思いました。
MVPアーキテクチャを用いて作成しているため、今回考える奴らはRepositoryに分類されます。
BookDao、DAO、Repositoryチガウ。ナニガチガウ( ・∇・)?
DaoやRepositoryはパターンをして存在しているのは認識していたのですが、DataBaseにアクセスするときなどに使うという知識しかないため両者の違いがわかりません。
( ;∀;)
調べてみた。
やはりそこら辺に落ちているサイトの記事を読むだけではいまいちわからない。
そこで下記の記事を見つけました。
今までの記事を読んでみてDAOは主にデータベースへのアクセス方法を隠蔽すると説明されていることが多い。
また、Repositoryに関してはアクセスする際にAPIから取ってきた情報なのかローカルのデータなのか等を意識する必要性をなくすと説明されていることが多い。
Repositoryはドメイン駆動設計、DAOはデザインパターンの用語で役割も違えば関心の向きが違うとのことなので、ひとまずそれで保留にして置きたい。
パッとしない終わり方になってしまいましたが、現時点の理解をまとめると
・DAOはデータアクセスの方法について利用するクラスが気にしなくていいようにするためのもの。
・Repositoryはデータの取得元がどこなのかを意識せずに使えるようにするためのもの。
という認識です。
上記の認識は間違っている可能性がとても高く、現時点での物なのでわかり次第記事をあげられればと思います。
また、Repositoryはドメインオブジェクトを操作するための物という説明があったため、やはりドメイン駆動設計に深く関わるのではないかと思っています。