If your shopping cart software can make the most of abandoned carts (send reminders that maybe they should come back and finsh the sale ect) and flush them from database and does good database housecleaning then keep them in the database.
If it only allows a return user to continue with current cart items then keep them hashed in cookie.
If you want a fresh cart on a return visit then maybe leave in session.