Mocking database stuff is notoriously hard, time-consuming and cumbersome. Therefore, a more practical approach would be to setup a test database, let your test run against it, and test the entire persistence thing in combination - this is not exactly unit testing, but far more practical...
Btw.: The typical 3-layer architecture is:
- Presentation layer
- Business Logic layer
- Persistence layer (part of which is the data storage system - mostly a database)