Мне просто интересно, почему сочетание Spring и Hibernate так популярно, когда можно выйти из Hibernate и использовать только Spring ORM?
Spring ORM или спящий режим
Ответ 1
Spring популярен, потому что он заботится о коде "вырезать и вставлять" шаблон, который у вас есть с любой структурой ORM. Подумайте try ... finally
блоки, касающиеся объекта сеанса (Hibernate или иначе) и commit / rollback
(транзакции).
Управление транзакциями также имеет силу Spring. Вы можете определять транзакции с помощью аннотаций или в файле конфигурации Spring xml. В конфигурационном файле преимущество состоит в том, что вы можете использовать подстановочные знаки, чтобы указать, что, например, все методы поиска в некоторых наборах пакетов должны поддерживать транзакции (PROPAGATION_SUPPORTS), но все методы вставки, обновления и удаления должны требовать транзакции (PROPAGATION_REQUIRED).
Итак, я всегда буду использовать Spring, независимо от структуры ORM. Если у вас есть простые требования или не так много JDBC-кода, Spring шаблонов JDBC может быть достаточно для вас. И Spring упрощает переход на спящий режим при необходимости.
Ответ 2
Spring не имеет собственного ORM. Вы можете использовать Hibernate, TopLink, iBatis или JDO.
Вы можете использовать Spring JDBC, но вы должны сами писать все мапперы.
Желательно оставить ORM из цикла, если вам не нравится динамический SQL или сложность решения ORM. Вы также можете устранить зависимость, сортируя упорство самостоятельно.
Ответ 3
Другие ответы действительно хорошие. Но чтобы ответить на вопрос, почему "w760 > /Hibernate" так популярен - IMHO - это потому, что они лучшие в своем классе технологии, которые позволяют вам двигаться быстрее. Spring делает намного больше, чем просто инъекции зависимостей и транзакции. Предоставлять решения для JMS, планирования и других вещей. Кроме того, они прошли испытания на битву и хорошо написаны. Они позволяют сосредоточиться на потребностях вашего бизнеса и сделать некоторые из трудных вещей уйти.
Все это не означает, что вам не нужны хорошие разработчики для реализации хорошего решения.