Как упростить комбо Spring / Hibernate, не переходя в Roo - PullRequest
3 голосов
/ 06 сентября 2011

Были ли в прошлом году какие-либо новые разработки по упрощению этой комбинации или она в основном такая же, как всегда?

Мне не очень нравятся многие новые платформы RAD /платформы (рельсы и т. д.).Я думаю, что они отлично подходят для небольших приложений или для доказательства концепций ... но меня обычно очень раздражают их недостатки, когда я перехожу к сложным требованиям.В частности, в Rails есть много проблем - на удивление слишком много, которые на самом деле замедляют меня по сравнению с тем, сколько времени у меня ушло бы на Java ... вещи, с которыми я думаю, что большинство людей никогда не столкнется никогда ... или, возможно, никогда не столкнется, покапериод их медового месяца закончился.

Во многих случаях я просто предпочел бы обладать мощью и надежностью Spring / Java, даже если это займет у меня больше времени на разработку приложения.Я чувствую себя комфортно с этим.Я верю в это.Я знаю, как развернуть его.Это работает, и это хорошо работает для больших приложений.

Мне бы очень хотелось как можно больше улучшить свой опыт разработки.Я ищу то, что люди обычно любят использовать для крупномасштабных проектов типа web 2.0 (ria) в наши дни в своих проектах Spring / Hibernate (или Spring / Что бы ни работало тоже, я думаю ...).

  1. Я убежден, что dbunit устарел и является источником моих проблем с производительностью тестирования.Есть ли что-то похожее на заводскую девушку, но для java?

  2. Есть ли способ сделать ссылки более "прикладными", а не просто свободными строками?Я часто реорганизую URL-адреса, и тестирование приложения вручную, чтобы убедиться, что ничего не сломалось, является большой болью.Буду признателен за любые решения этого.В настоящее время я использую Freemarker / Spring MVC.

  3. Я считаю, что мне нужно использовать все больше и больше AJAX в своих приложениях.Простой ajax хорош, но в настоящее время я должен использовать Джексона для анализа входящего запроса JSON, прежде чем он перейдет к контроллеру Spring MVC.Большая часть этого анализа / отображения очень трудоемка.Там должен быть лучший путь.Есть?Я больше не хочу программировать синтаксические анализаторы / средства отображения объектов для входящих запросов JSON на уровень моего контроллера.

  4. Одна из вещей, которые мне действительно понравились в Rails, была возможность объединять запросы иесть многоразовые части запроса.Я забыл, как они их называли.Есть ли способ сделать это с помощью Hibernate / Spring?У меня много запросов, которые используют массивные строки HQL, и большую часть времени сегменты этих запросов просто повторяются снова и снова по всему приложению.Я хотел бы повторно использовать то, что я могу здесь.Можно ли это сделать?

  5. Обычно при развертывании у меня возникает слишком много мелких проблем, которые никогда не будут обнаружены при тестировании.Ошибки Hibernate-прокси и странные проблемы с отложенной загрузкой находятся в верхней части этого списка, но даже могут возникать проблемы с аннотациями с контроллерами Spring MVC и множеством других проблем, которые сложно проверить (или, возможно, невозможно проверить?).Каковы некоторые решения таких проблем?Не используете Hibernate?Есть ли другой вид тестирования?Что работает?Я не против провести тестирование, но я хочу, чтобы оно было быстрым, иначе я, вероятно, обострюсь и откажусь это делать.

  6. Обычно все, что вы думаете, поможет производительности, котораяВозможно, я не слышал о.К сожалению, я некоторое время не был слишком активным в пространстве Java, поэтому я отстал.Мне нужен небольшой совет типа «Вот что доступно сейчас».

Спасибо!

1 Ответ

0 голосов
/ 06 сентября 2011

Я отвечу только на те, о которых знаю ...

2. Мы сделали что-то подобное в нашем приложении с пользовательской библиотекой тегов, но это, очевидно, полезно, только если вы используете JSTL. Рассматривали ли вы создание класса, который содержит все URL-адреса в виде статических конечных строк, а затем добавление этого класса во Freemarker в качестве общей переменной ? Ваши аннотации @RequestMapping в Spring MVC должны иметь возможность ссылаться на те же статические финальные строки.

3. Я рекомендую Direct Web Remoting - он автоматически обрабатывает AJAX-вызовы как на сервере, так и на сайте клиента. После настройки достаточно просто аннотировать методы Java, которые вы хотите вызвать из кода Javascript, а затем DWR генерирует код Javascript, который выполняет эти вызовы для вас и переводит возвращаемые значения в объекты Javascript. У DWR некоторое время не было активной разработки, но я нашел ее очень стабильной и надежной.

5. Что касается, в частности, отложенной загрузки Hibernate, мы просто включаем org.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor Spring, который сохраняет один сеанс открытым для всего веб-запроса. Это устраняет ошибки отложенной загрузки и облегчает понимание поведения Hibernate (т. Е. Поскольку вы всегда находитесь в сеансе, все обновления фиксируются в базе данных). Если вы собираетесь это сделать, сделайте это в начале разработки ... в противном случае существующий код может быть поврежден, потому что если он предполагает, что сессия закрыта.

6. Если ваш сайт - это больше веб-приложение, чем веб-сайт, рассмотрите возможность его создания с Vaadin . Это среда RIA с открытым исходным кодом, построенная на GWT, и мы довольно успешно ее используем в Spring и Hibernate. Мы используем Vaadin для «приложений», таких как инструменты администрирования, и Spring MVC / JSTL для «веб-сайтов», таких как общедоступные страницы; оба встроены в одну WAR с одним и тем же бизнес-уровнем Spring / Hibernate.

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