code data access in a database-agnostic way by introducing a layer between the