Удалось ли вам добиться успеха с веб-приложением Spring и Hibernate? - PullRequest
3 голосов
/ 20 марта 2009

Я работаю над веб-приложением среднего размера на 4-5 вкладок, логин пользователя для около 100 тыс. Пользователей. Мы завершаем редизайн приложения с использованием Spring и Hibernate, подключенного к MySQL.

Были ли у вас серьезные проблемы и что принесло пользу Spring вашему приложению?

Ответы [ 9 ]

8 голосов
/ 20 марта 2009

Никаких серьезных проблем. Весна была особенно полезна для:

  • Выполнение всей конфигурации сантехники последовательной и понятной
  • Внедрение зависимостей для поддержки лучшего факторинга кода
  • Декларативная функциональность «Открыть сеанс в представлении» для Hibernate
  • Декларация декларативной транзакции
  • Проект Acegi (теперь Spring Security) позволил легко интегрировать пользовательскую модель безопасности
  • Поддержка доступа к данным Spring устраняет необходимость в большом количестве шаблонов при любом доступе к JDBC - может быть, это не такой стимул для использования Hibernate, но у нас было сочетание обоих. Это также позволяет вам без проблем использовать JDBC и Hibernate вместе
4 голосов
/ 20 марта 2009

В дополнение к тому, что уже было сказано, я бы сосредоточился на более новых аннотациях стиля для Spring (например, @Controller) и Hibernate (например, @Entity). Это еще больше уменьшит вашу кодовую базу, оставляя вам меньше кода для обслуживания. С другой стороны, существует довольно значительная кривая обучения, но в конечном итоге урок, который я усваиваю снова и снова, заключается в том, что преимущества Spring + Hibernate значительно перевешивают затраты (кривая обучения). Вам просто нужно написать гораздо меньше кода, чтобы сосредоточиться на бизнесе.

3 голосов
/ 22 марта 2009

Говоря технически, я развернул коммерческие приложения с номерами от тысяч до нескольких сотен тысяч, используя spring, hibernate и оба.

С точки зрения управления в одном случае у меня была команда, которая была хорошими технологами, поэтому им удалось переписать приложение с пружиной и гибернацией, но ... они сходили с ума от интерфейсов (каждому новому объекту модели требовалось 16 интерфейсы), злоупотребляя AOP, так что транзакции и ведение журналов были практически невозможны, а трассировка стека была бессмысленной, использовала инструменты для сопоставления файлов гибернации без полного понимания того, что делается (в некоторых случаях объединение 4 таблиц, что могло быть простым сущности, а также множество проблем, которые сделали результирующее приложение намного сложнее для улучшения, отладки, исправления, даже настройки среды разработчика ....)

мой 2с

3 голосов
/ 20 марта 2009

+ 1 пружина + спящий ...... ...... 1001 *

100 тыс. Пользователей - это не средний размер .... это огромно.

С помощью Spring вы можете заставить кодер кодировать интерфейсы, что повышает тестируемость. Это то преимущество, о котором люди много не говорят.

посмотрите memcached на кэшированные данные memcached .....

2 голосов
/ 20 марта 2009

Как сказал Жюльен Частанг, вам нужно учитывать кривую обучения в своих оценках, если это ваш первый проект. Мы не смогли сделать это с нашей первой попытки и в итоге пришлось скорректировать многое из нашего планирования, потому что некоторые аспекты Hibernate были «трудными» (например, потребовалось некоторое время), чтобы выяснить.

Один конкретный совет, который я могу дать, основываясь на проблеме, с которой мы столкнулись: если вам нужно написать сложный SQL, и вы не хотите тратить время на выяснение того, как заставить такие запросы работать в HQL или других предложения в Hibernate, сначала включите его в vanilla SQL, а затем вернитесь позже и исправьте его обратно в Hibernate.

1 голос
/ 22 марта 2009

В спячке и весне есть большое понимание наверху. Я бы предложил, если у вас есть достаточно времени или опытного разработчика java / spring / hibernate. Когда вы начнете работать с весенним проектом, вы можете просто игнорировать его и сосредоточиться на дизайне страниц и логики. Спящий режим не так уж и сложен. HQL сложнее спросить. Большая часть моего времени проводится на уровне бобов и JSF. Сравнивая этот слой моего проекта с некоторыми друзьями, которые бездельничают в JSP, я рад быть в непринужденности JSF. Я легко переключился на Oracle с первоначальной реализации в MySQL, что доказывает, что Hibernate прекрасно справляется с абстракцией.

1 голос
/ 22 марта 2009

В Hibernate есть ситуации, когда создание конкретного объекта для реляционного отображения или написание конкретного запроса HQL очень затруднительно. Однако вы столкнетесь с 1 из 10 подобных вещей, и чем более нормализована ваша база данных, тем лучше вы будете. Это стоит того.

Любой новый веб-проект на Java должен использовать Spring MVC (2.5+ с аннотациями) и Hibernate.

1 голос
/ 20 марта 2009

Очевидно, что существует миллион способов создать такое приложение, как в мире Java-фреймворков, так и с помощью таких вещей, как Rails или Django.

Большим преимуществом для меня является то, что и весна, и спящий режим стали стандартами де-факто в мире Java, поэтому они определенно считаются «вещами, которые вы должны знать» (меня спрашивают на каждом собеседовании). Весна больше, чем Hibernate.

Чтобы понять значение весны, потребовалось несколько приложений с поддержкой пружины, прежде чем это стало для меня смыслом. Он применяет независимые модули кода и определенный стиль разработки компонентов, который облегчает тестирование. Я бы посоветовал вам просто пойти с этим и понять смысл его использования.

У меня смешанные чувства по поводу Hibernate, хотя важно использовать какой-то слой db, так что вы тоже можете.

Также см. этот вопрос.

0 голосов
/ 25 марта 2009

в дополнение к тому, что было сказано до сих пор, я настоятельно рекомендую книгу: Spring Recipes - подход к решению проблемы (Amazon) , в сочетании с очень хорошей онлайн-документацией вы должны быть готовы завоевать мир; -)

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