Я использую Hibernate и перепроектирую модели и DAO из ant. Задачи ant генерируют их, просматривая базу данных. Это работает очень хорошо. По мере продолжения проекта таблицы базы данных довольно часто меняются, что нарушает модели Hibernate. Мы просто перепроектируем модели, и мы готовы к работе.
Гибернация проста, если вы делаете это по-своему и придерживаетесь стандартных конструкций SQL. Я только что завершил 2 достаточно больших проекта, используя Hibernate. Спящий режим не вызывал затруднений. Если вам нужно выполнить какой-то необычный запрос, достаточно просто использовать SQL, хотя опытному Hibernater, вероятно, не понадобится.
Что еще приятно, вы получаете возможность ползать по классам очень естественным образом.
Например, если в опросе много вопросов, а у вопроса один ответ, вы можете сказать
Survey survey = SurveyDAO.get(entityManager, 1L); // 1 is the PK
List<Question> questions = survey.getQuestions();
for(Question question: questions) {
Answer answer = question.getAnswer();
System.out.println("Question "+ a.getQuestionNumber()+" = "+answer.getText());
}
И отношения идут и другим путем. Если у нас есть вопрос, мы можем получить опрос:
Survey s = someQuestion.getSurvey();
List<Questions> q = s.getQuestions();
Так что, если вы знаете вопрос, легко получить все вопросы в опросе.
Чтобы сделать все, что нам не нужно было писать какой-либо код Hibernate, кроме SurveyDAO.get (). Довольно просто на самом деле.