BT

Spring Roo 1.2 M1: Licença Apache, mais JPA, MongoDB e Camada de Serviços

por Bienvenido David III , traduzido por Wellington Pinheiro em 14 Out 2011 |

Foi liberado o primeiro Milestone do Spring Roo 1.2 (1.2.0-M1), a ferramenta da SpringSource para desenvolvimento rápido de aplicações (RAD). O Spring Roo é um projeto open source, que utiliza os princípios de convenção sobre configuração para criar aplicações Java baseadas no Spring. Além de passar a ser hospedado no GitHub e ter grande aumento de desempenho, o novo Spring Roo traz as melhorias a seguir:

  • Integração com o Spring Data JPA e uso do padrão Repositório/DAO
  • Integração com o MongoDB
  • Possibilidade de criar uma camada de serviços
  • Suporte avançado ao GWT
  • Funcionalidades para engenharia reversa de bancos de dados com múltiplos esquemas
  • Melhorias no ambiente de comandos (shell)

Segundo a equipe do Spring Roo, um benchmark utilizando grandes projetos mostrou uma melhoria de desempenho de dez vezes. Esses dados foram obtidos através de monitoramento e a análise do código em tempo de execução (profiling), verificação do acesso a disco (I/O) e também em função do código gerado automaticamente. A melhoria de desempenho torna-se mais significativa em grandes projetos.

A partir da nova versão, o Spring Roo está licenciado sob a Apache Software License 2 (ASL2), o que o torna mais consistente com a maioria dos projetos do SpringSource. A ASL2 permite o uso do projeto em desenvolvimentos comerciais, integração com sistemas de código fechado e redistribuição proprietária. Até então, o Spring Roo era licenciado sob a GPLv3, enquanto que os JARs de anotações eram distribuídos sob a ASL2 e GPLv3.

O código-fonte do Spring Roo agora está hospedado no GitHub. A razão principal dessa decisão é encorajar um envolvimento maior da comunidade de desenvolvedores. A adoção do GitHub também ajudará a simplicar o caminho para a submissão de novas contribuições.

Além disso, o novo Spring Roo permite que o desenvolvedor escolha a forma a ser usada para a persistência. Tradicionalmente era utilizado o padrão Active Record em entidades de persistência com JPA; gora também é possível utilizar repositórios com JPA, construídos em cima do Spring Data JPA. A forma de persistência é definida atribuindo true ou false ao parâmetro activeRecord, durante a criação da entidade:

entity --class ~.domain.Entity --activeRecord [true|false]

Outra opção disponível para repositórios no Roo é o MongoDB, um banco de dados NoSQL, orientado a documentos, escalável e de alto desempenho. Os seguintes comandos foram adicionados:

  • mongo setup. Configura o projeto para trabalhar com o MongoDB
  • entity mongo. Cria um tipo do domínio que para ser utilizado com o repositório do MongoDB
  • repository mongo. Adiciona a anotação @RooRepositoryMongo ao tipo em questão

O Spring Roo agora também permite o uso de camadas de serviço, através da anotação @RooService. Essa funcionalidade, muito solicitada pela comunidade, esconde o código de acesso e manipulação de dados das classes de controle (controllers). As camadas web, de repositório e de testes gerenciadas pelo Roo já funcionam de forma integrada com a nova funcionalidade. Para a camada de serviços, foi disponibilizado o comando service, que cria uma classe de serviço para acesso a uma determinada entidade do modelo.

O diagrama abaixo, extraído do blog do Spring Roo, mostra a nova camada de serviços e de persistência.

Outra melhoria importante é no suporte ao GWT. Agora, é possível gerenciar o sincronismo das classes RequestFactory (EntityProxy, RequestContext e Locator) com as classes de domínio e da camada de serviços. O scaffolding da camada de apresentação do GWT UI não é mais obrigatório; assim o desenvolvedor pode escolher como o Roo integra o GWT com o projeto. Os seguintes comandos foram introduzidos para a integração com o GWT:

  • web gwt all. Cria as requisições GWT, proxies e o scaffold para todas as entidades
  • web gwt gae update. Configura o projeto GWT para funcionar com o GAE
  • web gwt proxy all. Localiza todas as entidadese no projeto e cria o GWT proxies
  • web gwt proxy request all. Localiza todas as entidade no projeto e cria as requisições GWT e os proxies
  • web gwt proxy request type. Cria o proxy e uma requisição baseada em um tipo específico
  • web gwt proxy type. Cria um GWT proxy baseado num tipo específico
  • web gwt request all. Localiza todas as entidades no projeto e cria uma requisição GWT
  • web gwt request type. Cria um GWT proxy baseado em um tipo específico
  • web gwt scaffold. Cria uma requisição GWT, um proxy e o scaffold para um tipo específico

O suporte para a Engenharia Reversa é uma funcionalidade popular no Roo, que permite a criação dos CRUDs de entidades do modelo a partir das tabelas de um banco de dados relacional, além de automaticamente manter essa camada de entidades sincronizada com as mudanças no banco. A novidade no Spring Roo 1.2 é a habilidade de fazer a engenharia reversa de vários esquemas simultaneamente. O comando para isso tem o seguinte formato:

database reverse engineer --schema "s1 s2 s3" --includeTables "s1.tabela1 s1.tabela2 s3.tabela3

Também foram feitas diversas melhorias no shell do Spring Roo. Entre elas, está a possibilidade de executar comandos do sistema operacional direto do shell do Roo, através do operador "!".

Planejados para o próximo milestone do Roo 1.2, estão a integração com o JSF/PrimeFaces e o suporte aos multimódulos do Maven. Também haverá um novo add-on para JSF 2.0, que permitirá o uso de templates de Facelets ao invés de JSP.

As novas funcionalidades podem ser exploradas fazendo o download direto da SpringSource. Note que a versão 1.1.5 ainda é a recomendada para ser utilizada em projetos em produção. Para mas informações, visite o site oficial ou o fórum do projeto.

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber menssagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber menssagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber menssagens dessa discussão

Dê sua opinião

Conteúdo educacional

Feedback geral
Bugs
Publicidade
Editorial
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2013 C4Media Inc.
Política de privacidade
BT