layer of software that separates the in-memory objects from the database. Its responsibility is to transfer data between the two and also to isolate them from each other
create(); public function save(Product $product); public function update(Product $product); public function delete(Product $product); public function find($id); }