Hibernate is an ORM tool. It basically allows you to store objects in a relational database. In some cases this could be a bit overkill. You can't say that it loads unnecessary data without defining in the situation. Also hibernate caches so it might even save some calls to the database. You could just use a JDBC connection.
Databases are extremely good in joins. I would not go and cache things as this makes stuff a whole lot more complex. Build, perform performance analysis and only then if there are performance issues optimize.
Edit: and welcome to the JavaRanch!
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." --- Martin Fowler
Please correct my English.