All of the above, plus everything else that is in the documentation. Plus I'd recommend a good understanding of relational databases, not necessarily the minutiae of a specific database but general themes of what they are for and the basics of relatioal data.
When learning Hibernate, just start with the basics, and grow from there.
You need a database, and you need a JDK. From there, just verify your configuration with a simple entity that maps to a single table. Just get a simple mapping done, and try to get all the save, update, create and delete functionality working. That's the key to the whole thing.
From there, figure out how to do more complicated mappings, such as the ones you noted.
Once you've got the basics covered, you'll start asking good questions, and you'll find your answers in the various configuration, transaction and session objects Hibernate provides.
Check out my signature links for some tutorials on getting Hibernate up and running, and even tutorials on doing advanced database things as well.