Implementing the Persistence Layer - Part 1: Database