Don't repeat the DAO! For most developers, writing almost the same code for every DAO in a system has by now become a habit. While anyone would identify the repetition as a "code smell," most of us have learned to live with it. And there are workarounds.
Visual Topo - Logiciel de topographie spéléologique