Framework based on design patterns for providing persistence in object-oriented programming languages