I would say this is beyond serialization. Personally I would use a SQLite database. On game load you can do one big data read and on exit one big data write. This would also give you the advantage of organizing the data rather than serializing multiple object.
But does that really make sense? What do you get from a SQLite database if all you want is to do a big one load and save? You get the atomic write operation, sure, but still, it seems overkill and over-engineering to me. The only place I would use SQLite is in a scenario where I intend to query for the data when I need it (as in with real databases). Probably a good example is a Football Manager type of game.