Hibernate для сохранения или просто SQL-запрос - PullRequest
1 голос
/ 04 августа 2010

Я впервые использую hibernate для одного из своих проектов. Одним из объектов является образование (StudentObject, CollegeObject, MajorObject, степеньString). Чтобы вставить объект «Образование» в базу данных, мне нужно загрузить из базы данных учащийся, колледж и основной объект, а затем создать его экземпляр и сохранить. Как это лучше, чем просто SQL-запрос (вставить в ..)? Разве SQL-запросы не будут быстрее, поскольку нет необходимости загружать 3 объекта diff из базы данных?

Ответы [ 2 ]

3 голосов
/ 04 августа 2010

Разве SQL-запросы не будут выполняться быстрее, поскольку нет необходимости загружать 3 разных объекта из базы данных?

Поправьте меня, если я ошибаюсь, но откуда берутся идентификаторы StudentObject, CollegeObject и MajorObject, если не из базы данных? И если это какие-то справочные данные, они являются идеальными кандидатами для кэширования второго уровня (и это будет означать, что база данных вообще не попадет).

Независимо от вашего ответа, мое мнение об использовании ORM, такого как Hibernate, для типичного приложения CRUD:

  • Сокращает время разработки, удаляя весь раздражающий код, необходимый для ручного CRUD.
  • Предоставляет полезные функции, такие как отложенная загрузка, кэширование второго уровня, кэширование запросов.
  • По моему опыту, он генерировал лучший SQL, чем средний разработчик
  • В 80% случаев он будет работать нормально
  • И даже если вы потратите время на настройку остальных 20%, вы все равно будете делать это быстрее, чем без ORM.

Подводя итог, все дело в том, чтобы повысить продуктивность разработок, и мой опыт с этой точки зрения положительный. В general он работает действительно хорошо, даже лучше, чем пользовательский код (благодаря отложенной загрузке и кэшу 2-го уровня). Однако в некоторых случаях производительность будет "не такой хорошей", как в случае с пользовательским SQL. Но тюнинг возможен.

Возвращаясь к вашему вопросу, я думаю, что преимущества в некоторых случаях использования могут оказаться непомерными (хотя я все еще не уверен, что ваш пример хороший). Но есть ли у вас проблемы с производительностью?

0 голосов
/ 04 августа 2010

Да. Запросы SQL быстрее.

Все платформы ORM имеют такие издержки.

Дело в том, что платформа ORM должна повысить производительность труда разработчиков, а накладные расходы на запросы SQL должны управляться, когда и если это действительно замедляет работу. По моему опыту это действительно редко. При необходимости вы обычно можете использовать SQL. Большинство приложений работают нормально с платформой ORM.

Если я напишу небольшое приложение, я бы даже не использовал фреймворк ORM. Но это шанс для вас учиться.

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