Implementation of the DAO design pattern using an Abstract Factory