Artigo do tipo Tutorial
Recursos especiais neste artigo:
Contém Conteúdo sobre boas práticas.

Do que se trata o artigo

Este artigo demonstra a utilização do framework VRaptor e como integrá-lo, de modo simples, com o JPA aplicando boas práticas e resolvendo diversos problemas de implementação de maneira menos intrusiva no código.

Em que situação o tema é útil
Este artigo será útil para os desenvolvedores que buscam alternativas de implementação para suas aplicações, focando encontrar soluções simples e rápidas, que são o diferencial proposto pelo VRaptor.

VRaptor 3.4 integrado ao JPA
Neste artigo, demonstraremos por meio da criação de uma aplicação como configurar e utilizar o VRaptor, implementando suas principais funções com boas práticas de desenvolvimento. Nesta aplicação também integraremos o VRaptor com o JPA de maneira simples.

Com o mercado cada vez mais competitivo, a produtividade, aliada a outros fatores, se torna fundamental para o sucesso de um projeto. Através da produtividade é possível reduzir custos, diminuindo o tempo de desenvolvimento e prazos de entrega. Com base neste pensamento, e em meio ao constante crescimento da utilização de aplicações web, foram surgindo frameworksLF com o objetivo de facilitar a implementação e proporcionar maior agilidade na construção dessas aplicações. Como um desses frameworks de destaque está o VRaptor, que vem ganhando adesão do mercado.

O VRaptor é um framework MVC utilizado para o desenvolvimento de sistema web de forma simples e ágil, proporcionando assim grande produtividade para quem o utiliza. Sua curva de aprendizado é baixa, pois é fácil de ser utilizado e necessita pouca configuração. Além disso, boas práticas como Injeção de Dependência e utilização de POJOs são amplamente empregadas. Deste modo, é possível resolver vários problemas do programador de maneira menos intrusiva em seu código. Esta é uma grande vantagem, pois conseguimos integrar o VRaptor a outros frameworks sem muito trabalho.

Com base nisso, neste artigo veremos porque o VRaptor, aliado ao JPA, torna-se uma ótima opção para o desenvolvimento de sistemas. Para tanto, criaremos uma aplicação onde serão demonstradas as principais funcionalidades do VRaptor e também como integrá-lo ao JPA, adotando o padrão “Open Session in View”, de maneira simples.

O VRaptor 3.4

O VRaptor foi desenvolvido pela Caelum, e tem como principal foco a simplicidade e agilidade no desenvolvimento e manutenção de código. Por ter sido criado por brasileiros, existe uma versão de sua documentação em português. Dentre as principais características do VRaptor está a ampla adoção dos princípios REST. Um destes princípios é a identificação de funcionalidades ou recursos através de URIs. Dessa forma, para cada funcionalidade deve existir um identificador único para sua utilização. Para melhor compreender este princípio, como exemplo poderia ser utilizada a URI /carro/listagemCarros para acessar um método que retorna uma listagem de carros. Com base neste exemplo, poderíamos definir duas funcionalidades distintas para esta mesma URI, contanto que estas funcionalidades estejam diferenciadas pelo método de acesso (GET, POST, DELETE, etc.).

O conceito de Injeção de dependências, que permite reduzir o acoplamento e aumentar a flexibilidade da codificação, é fortemente empregado pelo VRaptor através da anotação @Component. Por meio deste conceito, podemos retirar a responsabilidade da classe de instanciar todas as suas dependências, deixando a cargo do framework o gerenciamento das instâncias dos objetos utilizados na aplicação. Conseguimos também definir o escopo das instâncias que são injetadas pelo VRaptor através das anotações:

· @RequestScoped: Define que a instância do objeto existirá enquanto durar a requisição. Assim, será criada uma nova instância a cada nova requisição;

· @SessionScoped: Define que a instância do objeto existirá enquanto durar a sessão do usuário;

· @ApplicationScoped: Define que existirá apenas uma instância do objeto para toda a aplicação.

Na aplicação que criaremos serão utilizadas algumas dependências (classes), como por exemplo, a classe EntityManager contida no JAR da API JPA. Para utilizar a injeção de dependências para estas classes será necessário implementar um ComponentFactory, que é um tipo de componente do VRaptor que tem como função gerenciar instâncias de objetos, ou seja, criar e destruir estas instâncias.

Utilizaremos também o componente Interceptor do VRaptor, que permitirá interceptar ações (lógicas de negócio) antes ou depois de sua execução. Este componente será utilizado para definirmos os escopos transacionais dos métodos que irão manipular os dados no banco (insert, delete e update). Para realizarmos estas operações utilizando JPA, precisamos antes iniciar uma transação e, após o término da operação, efetuar o commit.

...
Quer ler esse conteúdo completo? Tenha acesso completo