Data store abstraction using repository pattern

Domain object have to define __slot__ for its attributes.
The attribute name is supposed to be same as each database columns.