https://stackoverflow.com/questions/8550124/what-is-the-difference-between-dao-and-repository-patterns
https://thinkinginobjects.com/2012/08/26/dont-use-dao-use-repository/