Caching all the rows in the application has many strong disadvantages:
- it doesn't scale: what if you have 1 million users? What if every user has 5 orders, referencing 7 products, etc. etc. You'll quickly end up with the full database in memory, and that's not sustainable.
- it's harder to do correctly: you'll have to deal with several requests reading and modifying the users concurrently. Database transactions do that for you.
- it forces your app to be the exclusive owner of the database. If any other app (or script, or batch) accesses the database, your app won't be aware of it, will display stale data, and will generate errors because, for examle, it will try to update users that don't exist anymore.
The more you have state in an application, the harder it is to make it correct and fast. Trust your database: it's fast and handles many concurrent accesses correctly. If it starts getting slow, then think about your queries, use appropriate indexes, etc.