Thanks all
My requirements are simply to allow the user to click "save game" in my Java gui, and it will load their previous game. I started out using serialization, but then realised two things.
1. Serialization is limited, I can't create relationships per se, and I cannot read data from multiple sections aka there are no joins in serialization.
2, I felt it would useful to learn another language other then Java and my game will require some form of storage. I opted for mysql because it is open source. It might not be the most suitable RDBMS but I am a newb to back end code.
The point of the snapshot, was to simply save the game at a specific point, such that, the game can be re-loaded when the Java event is triggered by clicking the "load game" button.
Now then, I already know how to backup and re-load a mysql database using mysqldump and as Dave pointed out, this is one strategy which has been used in commercial software before. BUT it surely isn't the most elegant solution. In terms of level of details, I want the detail to be comprehensive, so I am anticipating a large database.