Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
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
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;
}
}
Конференция SpringOne 2GX — новинки от SpringSource