Я бы на самом деле не назвал DAO "шаблоном". На мой взгляд, DAO - это практически объект доступа к данным, который включает в себя детали доступа к постоянному хранилищу данных и, вообще говоря, не имеет никакого отношения к базе данных:
interface IBlogDaoService
{
Blog GetBlog(long id);
void SaveBlog(Blog blog);
}
Понятно, что реализации могут использовать либо БД (в этом случае вполне логично использовать Data Mapper), либо простой механизм хранения файлов XML.
С другой стороны, Data Mapper - это скорее шаблон, который определяет слой, отвечающий за перевод графов объектов в памяти в реляционную структуру.