I would make the cart data persistent in the database.
This has 2 main advantages: it adds business value and reporting capabilities, allowing you to (for e.g.) analyze which carts are abandoned. The second advantage is that you can cluster your application more easily, over different clients, and your application will need less operative memory to run, allowing the application's memory behaviour to be more predictable.