На вопрос по определению не возможно ответить.
Все EE проекты разные, используются разные технологии и framework-и. Нужно хорошо знать язык и принципы работы основных технологий. Т. е. вы должны знать не что такое Hibernate, а что такое ORM, тогда вам будет плевать, Hibernate это или нет, будете писать с использованием любых вещей, а знание "узких" мест и особенностей инструментов придет с опытом использования не в одном или двух, а в десятках проектов.