Какой Java ORM Вы предпочитаете, и почему? [закрытый]

для подведения итогов:

import inspect
print( "".join(inspect.getsourcelines(foo)[0]))
252
задан Tom Neyland 25 September 2009 в 05:59
поделиться

8 ответов

Будьте в спящем режиме, потому что это - в основном defacto стандарт в Java и было одной из движущих сил в создании JPA. Это имеет превосходную поддержку в Spring, и почти каждый Java поддержка платформы это. Наконец, GORM является действительно прохладной оберткой вокруг этого делающий динамические средства поиска и так далее с помощью Groovy.

Это было даже портировано к.NET (NHibernate), таким образом, можно использовать его там также.

57
ответ дан Abdullah Jibaly 23 November 2019 в 02:51
поделиться

SimpleORM, потому что это просто и без волшебства. Это определяет все структуры метаданных в коде Java и очень гибко.

SimpleORM обеспечивает схожую функциональность для Спящего режима путем отображения данных в реляционной базе данных к объектам Java в памяти. Запросы могут быть определены с точки зрения объектов Java, объектные идентификационные данные выровненные ключей базы данных, отношения между объектами поддерживаются и изменили объекты, автоматически сбрасываются к базе данных с оптимистическими блокировками.

, Но в отличие от этого В спящем режиме, SimpleORM использует структуру очень простого объекта и архитектуру, которая избегает потребности в сложном парсинге, код байта, обрабатывающий и т.д. SimpleORM, является маленьким и прозрачным, упаковывается в двух банках просто 79K и 52K в размере только с одной маленькой и дополнительной зависимостью (Slf4j). (Будьте в спящем режиме, по 2400K плюс приблизительно 2000K зависимых Банок.) Это делает SimpleORM легким понять и так сильно снижает технический риск.

11
ответ дан David Schmitt 23 November 2019 в 02:51
поделиться

Я перестал использовать ORM.

Причина не в каком-то большом изъяне в концепции. Hibernate работает хорошо. Вместо этого я обнаружил, что запросы имеют низкие накладные расходы, и я могу уместить много сложной логики в большие SQL-запросы и переложить большую часть своей обработки в базу данных.

Так что рассмотрите возможность использования только пакета JDBC.

231
ответ дан 23 November 2019 в 02:51
поделиться

Eclipse Link , по многим причинам, но, в частности, мне кажется, что в нем меньше раздувания, чем в других решениях основного потока (по крайней мере, меньше раздувания на лицо).

О и Eclipse Link был выбран в качестве эталонной реализации для JPA 2.0

10
ответ дан 23 November 2019 в 02:51
поделиться

У меня был действительно хороший опыт работы с Avaje Ebean , когда я писал приложение JavaSE среднего размера.

Он использует стандартные аннотации JPA для определения сущностей, но предоставляет гораздо более простой API (без EntityManager или какой-либо из этих прикрепленных / отсоединенных сущностей). Он также позволяет при необходимости легко использовать SQL-запросы или простые вызовы событий JDBC

. Он также имеет очень удобный гибкий и безопасный по типу API для запросов. Вы можете написать что-то вроде:

List<Person> boys = Ebean.find(Person.class)
                                  .where()
                                       .eq("gender", "M")
                                       .le("age", 18)
                                  .orderBy("firstName")
                                  .findList();
18
ответ дан 23 November 2019 в 02:51
поделиться

Нет, потому что наличие ORM отнимает слишком много контроля с небольшими преимуществами. Полученная экономия времени легко сдувается, когда вам нужно отлаживать отклонения, возникающие в результате использования ORM. Более того,

95
ответ дан 23 November 2019 в 02:51
поделиться

Я бы рекомендовал использовать MyBatis . Это тонкий слой поверх JDBC, очень легко сопоставить объекты с таблицами и при этом использовать простой SQL, все под вашим контролем.

25
ответ дан 23 November 2019 в 02:51
поделиться

Hibernate, потому что он:

  • стабилен - он существует уже столько лет, в нем отсутствуют какие-либо серьезные проблемы
  • диктует стандарты в области ORM
  • реализует стандарт ( JPA), помимо того, что он диктует его.
  • имеет массу информации об этом в Интернете. Существует множество руководств, решений общих проблем и т. Д.
  • мощный инструмент - вы можете преобразовать очень сложную объектную модель в реляционную модель.
  • он поддерживает любые основные и средние СУБД
  • , с ним легко работать, как только вы его хорошо изучите

Несколько моментов о том, почему (и когда) использовать ORM:

  • вы работаете с объектами в вашей системе (если ваша система была хорошо спроектирована). Даже если вы используете JDBC, вы в конечном итоге создадите некоторый уровень перевода, чтобы вы перенесли свои данные в свои объекты. Но я держу пари, что hibernate лучше переводит, чем любое нестандартное решение
  • . Он не лишает вас контроля. Вы можете управлять вещами в очень мелких деталях, и если API не имеет какой-либо удаленной функции - выполните собственный запрос, и он у вас есть.
  • любая система среднего или большего размера не может позволить себе иметь одну тонну запросов ( будь он в одном месте или разбросан по всему миру), если он нацелен на поддержку
  • , если производительность не критична. Hibernate добавляет накладные расходы на производительность, которые в некоторых случаях нельзя игнорировать.
51
ответ дан 23 November 2019 в 02:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: