The purpose is to abstract the data storage retrieval mechanism from data usage and manipulation.
Benefits:
- Underlying storage can change (switch from Oracle to MSSQL for example), and you need a way to localize those changes
- Schema changes - see above
- You want a way to run disconnected from your db (demo mode): Add file serialization/deserialization to the DAL