Преимущества Hibernate перед только что сгенерированным DAL на основе таблиц БД и sprocs? - PullRequest
1 голос
/ 27 сентября 2010

Каковы преимущества Hibernate над только что сгенерированным DAL на основе таблиц и sprocs базы данных?

т.е. написание или использование инструмента для генерации кода для уровня доступа к данным по сравнению с использованием hibernate

Ответы [ 2 ]

1 голос
/ 28 сентября 2010

Я использую 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 (). Довольно просто на самом деле.

1 голос
/ 27 сентября 2010
  1. спящие сущности - это обычные POJO, которые могут инкапсулировать бизнес-логику, и если схема базы данных изменяется, сущности могут быть адаптированы, их не нужно повторно генерировать.
  2. код, который принимает сущности и сохраняет их (hibernate-core), широко используется и имеет поддержку во многих различных средах.
  3. дополнительные функции, такие как управление транзакциями, язык запросов на основе Java-компоновщика имногие другие функции уже включены в режим гибернации. Если эти функции вам пригодятся, то вы получите их из коробки

Самым большим недостатком будет то, что вы потеряете детальный контроль, поэтомуизучите, насколько хорошо Hibernate делает все то, что вам нужно, прежде чем участвовать ... также, чтобы освоить hibernate и множество его пристрастий, потребуется немало времени, вы не начнете использовать hibernate и станете его мастером в том же духе.неделю ... Я пользуюсь им уже больше года, но у меня все еще есть проблемы, которые иногда трудно найти

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...