Pull to refresh

Comments 14

ну вот насчёт «Roo быстрее Grails» — это спорный ещё вопрос.
UFO just landed and posted this here
Spring + AspectJ + Кодогенерация + CLI-интерфейс = RAD-фреймворк Roo.
По крайней мере, мотивация для создания Roo была именно такой.

Мне Roo понравился (плюс, его автор — совершенно замечательный тип :) ).

Вот пример скрипта на Roo (тот самый wedding.roo из комплекта):

project --topLevelPackage com.wedding
persistence setup --provider HIBERNATE --database HYPERSONIC_PERSISTENT
database properties list
database properties set --key database.url --value jdbc:hsqldb:${user.home}/my-wedding

entity --name ~.domain.Rsvp
field string code --notNull --sizeMin 1 --sizeMax 30
field string email --sizeMax 30
field number attending --type java.lang.Integer
field string specialRequests --sizeMax 100
field date confirmed --type java.util.Date

test integration
controller scaffold ~.web.RsvpController
selenium test --controller ~.web.RsvpController

// (quit, mvn test, mvn tomcat:run, localhost:8080/wedding, mvn selenium:selenese)

logging setup --level DEBUG --package WEB
security setup

controller class --name ~.web.PublicRsvpController
finder list --class ~.domain.Rsvp --filter code,equ
finder add --finderName findRsvpsByCodeEquals

email sender setup --hostServer 127.0.0.1
field email template --class ~.web.PublicRsvpController

// quit, mvn eclipse:eclipse; import project into Eclipse

// complete manual configuration as described at blog.springsource.com/roo-part-2/

logging setup --level DEBUG


На выходе получаем приложение на Java + Spring + Hibernate, плюс тесты (в т.ч для Selenium) — в виде maven проекта.

По-моему, круто.
UFO just landed and posted this here
>На выходе получаем приложение на Java + Spring + Hibernate
и полное непонимание того, что и как работает…
спасибо, лучше уж grails
То есть как это? Что может быть непонятного в связке Spring + Hibernate?! :)

Я, например, к Grails отношусь с подозрением, ибо не до конца понимаю, что оно там внутри делает («а внутре у нее неонка»). То есть, теоретически я знаю, что под капотом у Grails все те же Spring + Hibernate (да?), но все же…

Это в смысле — каждому свое. Лично мне нравится, что я получаю знакомый набор технологий maven + java + spring + hibernate. (Олд скул форева). Выпадет шанс реально поработать с Grails — может, изменю мнение. Groovy я уже полюбил :)
>То есть как это? Что может быть непонятного в связке Spring + Hibernate?! :)

тут вопрос не в Spring+Hibernate, а, скорее, структуре проекта — я лично не до конца представляю, что делает строчка «finder list --class ~.domain.Rsvp --filter code,equ»

>То есть, теоретически я знаю, что под капотом у Grails все те же Spring + Hibernate (да?), но все же…

да, они. Более того, с грядущей версии 1.2 можно использовать не только Hibernate напрямую, но и Spring (MVC).

>Олд скул форева
вряд ли такие люди, как вы — ЦА для Roo
Упомянутая строчка создаст следующий аспект AspectJ:
package com.wedding.domain;

import java.lang.String;
import javax.persistence.EntityManager;
import javax.persistence.Query;

privileged aspect Rsvp_Roo_Finder {

public static Query Rsvp.findRsvpsByCodeEquals(String code) {
if (code == null || code.length() == 0) throw new IllegalArgumentException("The code argument is required");
EntityManager em = Rsvp.entityManager();
Query q = em.createQuery("SELECT Rsvp FROM Rsvp AS rsvp WHERE rsvp.code = :code");
q.setParameter("code", code);
return q;
}

}


Хммм… даже не на Hibernate, оказывается. Интересно, надо покрутить.
>Хммм… даже не на Hibernate, оказывается. Интересно, надо покрутить.

вот и я говорю — неизвестно, чего он там хорошего или не очень внутри нагенерил.
В grails, кстати, хватило бы просто DomainClass.findRsvpsByCodeEquals(String code) без имплементации))
И, кстати, насчет ЦА — не согласен. Мне тоже RAD бывает нужен.
Grails — действительно очень удобный фреймворк, активно его используем в разработке. Действительно, он основан на вышеупомянутых технологиях. Отличие в том, что разрабатывать веб-приложения на нём гораздо быстрее, чем на связке «Java + Spring + Hibernate». Он и позиционируется как средство для agile-разработки.
Всё же хорошо, что популярные фреймворки(Spring, Hibernate) влияют на стандарты. Я надеюсь и OSGi победит в споре о Java. Modularity
Просматривая Twitter по тагу #springone2gx, набрел на прекрасный комментарий: «Производительность GSP в Grails 1.2 повысилась в 2-3 раза благодаря тому, что убрали случайно забытый вызов Thread.sleep()»
Sign up to leave a comment.

Articles