Regarding query cache, there's HibernateTemplate's "cacheQueries" bean property, which will apply to all queries executed by the template.
Regarding retrieving a single persistent object, there are no such built in methods in HibernateTemplate, mainly for the reason that there are a lot of find signature variations.
As an alternative, you can use the generic org.springframework.dao.support.DataAccessUtils class, like as follows, which is pretty concise too:
The uniqueResult method will throw proper DataAccessExceptions if the given collection size does not match.
Object myObject = DataAccessUtils.uniqueResult(getHibernateTemplate().find(...));