Série Spring:Rodando Unit Test com Spring Framework

Olá Pessoal,

Nesse post veremos como rodar nossos unit tests com o Spring framework, ou seja, aproveitar tudo de bom que tem o Spring e fazer nossos unit test funcionar normalmente. É bastante simples.

lets go…

Começando

Bem não vou entrar nos detalhes do que  é unit test, Spring, JUnit etc. Vamos direto ao ponto de maneira prática. Primeiro Crie um Java Project, o meu será SpringExampleUnitTest

note: claro que você precisa ter baixado o Spring framework core versão 3.x.

 

springexampleunittestproject

Note: adicione o arquivo commons-logging-1.1.1.jar  caso não tenha só baixar esse arquivo, basta digitar o nome no Google .

Desenvolvendo

Como bom baiano e pensando no carnaval de salvador vamos de chicletão. Temos uma interface que tem um método e uma classe que vai implementar:

 

package br.com.camilolopes;

public interface Competidor {

public void apresentar();

}

public class Chicletao implements Competidor {

                private Chicleteiro chicleteiroMusica;

                @Override

                public void apresentar() {

                               chicleteiroMusica.cantar();

                }

                public void setChicleteiroMusica(Chicleteiro chicleteiroMusica) {

                               this.chicleteiroMusica = chicleteiroMusica;

                }

}

 

public interface Musica {

void cantar();

}

public class Chicleteiro implements Musica {

                @Override

                public void cantar() {

                               System.out.println(“chicleteiro eu, chicleteira ela”);

                }

}

 

E no package conf, criamos um xml com as configurações do Spring:

<beans xmlns=”http://www.springframework.org/schema/beans”

xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”

xsi:schemaLocation=”http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-3.0.xsd”>

 <!– classe normal –>

 <bean id=”chicleteiro” />

<!– classe que implementa a interface –>

 <bean id=”bell”>

                <property name=”chicleteiroMusica” ref=”chicleteiro”/>

 </bean>

</beans>

 

Pronto. Agora vamos criar a classe de teste.Porém, vamos entender o que acontece com a nossa aplicação. Quando o método apresentar() é invocado, a classe vai se apresentar com a musica que deseja, no caso da classe Chicleteiro, vai cantar: “chicleteiro eu, chicleteira ela”.

 

@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration(locations={“classpath:conf/idolos.xml”})

public class ChicletaoTest {

                @Autowired

                private Chicleteiro chicleteiro;

               

                @Test

                public void testCantar() {

                Chicletao chicletao = new Chicletao();

                chicletao.setChicleteiroMusica(chicleteiro);

                try{

                               chicletao.apresentar();

                }catch (NullPointerException e) {

                               Assert.fail(“not expected result”);

                }

                }

 

Com Spring precisamos usar anotação @RunWith e informar qual framework vamos usar, no nosso caso usamos o JUNIT.Em seguida com anotações @ContextConfiguration estamos dizendo qual o xml que tem as configurações do Spring que usaremos para os testes. Que é o mesmo da aplicação. Em seguida fizemos um teste que apenas chama o método apresentar, e esperamos que nunca tenhamos um NullPointerException, mas para isso acontecer é apenas se a instância que chama o método for null, ou seja, não for instanciada. E com esse teste estamos validando duas coisas, uma que o Spring realmente está instanciando o atributo e que o resultado é o que esperamos. Veja:

springexampleunitestgreenresult

 

E assim temos nosso unit test integrado com o Spring. Simples não?

GitHub

Acesse o repositório no github com todos os projetos da série Spring:  https://github.com/camilolopes/workspacespring

Vou ficando por aqui!!

See ya! 

Hibernate Schema Diferente via Java Project

olá Pessoal,

Este post é levemente diferente do que vimos no Mapeando schemas diferentes com o Hibernate. Lá tivemos que criar um bean para representar à tabela, neste aqui vamos usar um mapeamento para tabela já existente, assim evitamos de ter dois beans para uma mesma tabela.

Lets go…

Contexto

No post Mapeando schemas diferentes com o Hibernate assumimos que não existia nenhuma projeto Java que usasse o schema ereaders. Mas, no contexto de hoje vamos supor que tenha um outro projeto que use e já tenha os devidos mapeamentos para a tabela ereaders.usuario e não queremos ter que criar um novo bean em nosso projeto só para ler esse schema, pensamos em aproveitar o mapeamento já feito e usá-lo. Isso nos ajuda até em não ter que ficar atualizando cada bean, caso algum atributo da tabela venha sofrer alteração. Então temos os seguintes projetos Java:

O projeto sem enumeração é o que tem o mapeamento usando annotations para tabela que está em ereaders. Como usar esse bean em outro projeto java?

Muito simples, basta adicionarmos ao projeto HibernateSchema2 uma dependencia com o projeto HibernateSchema. Assim, podemos acessar as classes disponiveis naquele projeto. Para fazer isso, clique com o botão direito do projeto >> build path >> configure build path e adicione o projeto HibernateSchema, conforme a imagem a seguir:

No arquibo hibernate.cfg.xml informamos a classe nova que o projeto deve reconhecer via Hibernate:

< mapping class=“br.com.camilolopes.bean.Usuarios”/ >

Testando

Faremos algo semelhante ao que vimos no outro post, vamos ler dados da tabela e imprimir o valor em seguida, porém vamos usar Criteria API:

publicclass UserDAO extends DAO {

publicList getListUsers(){

begin();

Criteria criteria = getSession().createCriteria(Usuarios.class);

return criteria.list();

}

}

Na classe main, adicionamos o codigo:

publicstaticvoid main(String[] args) {

UserDAO userDAO = new UserDAO();

List<Usuarios> listUsers = userDAO.getListUsers();

for (Usuarios usuarios : listUsers) {

System.out.println(usuarios.getEmail()); } }

O resultado:

Nada de novo, o mesmo resultado que tivemos no outro post. Mas, qual a diferença? Veremos isso com base no que pode ser “problema” em alguns projetos.

Problema

  • um dos problemas é ter dependência com outro projeto, ou seja, se o outro não buildar/compilar o seu ficará preso. E isso em alguns cenários pode ser ruim. Depende da relação entre os projetos.

Vantagem

  • você não precisa ter mais dois beans para mesma tabela, então tudo é focado apenas no bean que já está no outro projeto, caso esta sofra alterações não preciso mudar no projeto HibernateSchema2. E evita essas duplicações de beans.

Qual usar?

Como falei, não há segredo, e sim necessidade, o que seu projeto importa mais? O que for mais importante é o que vai precisar.

Vou ficando por aqui espero que tenham gostado do post.

Abracos, see ya! 

Lançamento Oficial do Livro JEE com Frameworks

Comprar

ae Pessoal,

Hoje é mais um dia feliz na minha vida, e primeiramente quero agradecer à todos vocês, pela força, atenção, feedbacks que venho recebendo nesses 3 anos de blog e sem eles, acho que não estaria aqui hj fazendo este post e publicando mais este projeto. Pois, meu segundo filhão nasceu, huhuhu \o/. Lindo igual ao pai, por consequencia do destino hehe. Uma das novidades é que além do formato impresso, temos a versão e-book. A seguir fiz um overview,há um post detalhado de  pré-lançamento aqui.

Lets go…

Note: Infelizmente, tivemos um problema na linha de produção da gráfica e atrasou a publicação que estava prevista para meados de julho/2011.

Agradecimento

Antes de tudo, preciso agradecer ao melhor amigo o Edson Gonçalves. Amigo este de longas datas, o qual eu tenho grande admiração e respeito. É um dos profissionais mais completos de TI que já pude conhecer, o cara tem um conhecimento cross que é uma coisa de louco(não se limita só a parte técnica). Fora amizade que temos, onde às vezes pego o caminho errado, o verdadeiro amigo aparece e ti fala:”Falei que poderia contar comigo, o caminho  é aquele vai em frente”. Esse é o Edson um amigo de verdade.

Outra pessoa que não posso deixar de agradecer é o Daniel de Oliveria (leader-DFJUG) de uma das maiores e respeitável comunidade de Java que temos no Brasil, estou falando do DFJUG. E não poderia deixar de dar minha contribuição (para quem não sabe eu vim da comunidade Java, foi onde tudo começou e hoje retribuir o que recebi é o minimo que posso fazer), adicionado a marca  na capa do livro. Obrigado Daniel pelo seu apoio e da comunidade :).

Overview

O livro tem como objetivo de ajudar aqueles profissionais que desejam aprender Java com Frameworks. É comum ao sairmos do “ABC do JEE” (normalmente é JSP/Servlet) sem saber qual framework estudar (Hibernate, JSF, Spring, “Struts”, VRaptor etc). Porém, há um problema que todo iniciante encontra: como aprender os frameworks e saber integrá-los em uma aplicação real? É isso que vamos ver no livro, aprender a usar os frameworks de forma prática e ver um pouco da teoria(se não gosta de teoria não se preocupe, pois veremos o suficiente para poder programar de maneira confortável). Os exemplos são variados, desde Java Application até JEE, a evolução de aprendizado no livro está no formato “baby-step” ajudando assim o leitor leigo no assunto. Uma novidade que alguns vão gostar e outros não, são os exercícios chamados de “Trabalho do dia” que tem como objetivo fazer o leitor desenvolver uma solução, porém há momentos que o leitor vai precisar fazer uma pesquisa na documentação da API, Google ou consultar outros capítulos.Porém, não avisamos isso no livro, então  o leitor terá que ter essa percepção. O motivo de ter adotado isso aos exercícios, transmitir um pouco do que vai encontrar no dia-dia como desenvolvedor in company, pois nem sempre teremos um colega do lado para dar o help que precisamos.

Público-Alvo

Programadores Java que tem como objetivo aprender de forma pratica o uso dos frameworks JEE mais requisitado no mercado.

Qual o diferencial?

Meus livros são diferentes, primeiramente pela escrita. Eu gosto muito da informalidade, de ser direto e tentar transmitir a informação da melhor maneira possível, como se eu tivesse ao lado do leitor. Nesse livro há vários diferenciais, um deles é o nosso laboratório on-line onde o leitor poderá fazer download do source, assistir uns vídeos de como colocar aplicação em um servidor de produção JEE(apoio da www.integrator.com.br), exercícios práticos etc.

Quando ler?

Assim, que terminar seus estudos, com Servlet & JSP, vc pode ler, do contrário, não faça o investimento agora e aguarde mais um pouquinho( coloque o livro na prateleira ou remova do seu carrinho de compras : ) ).

Requisitos

É preciso já ter uma certa experiência com Java, Banco de dados, saber como as aplicações JEE funcionam etc. Como o livro é focado em ensinar a usar de forma pratica os frameworks, não podemos perder tempo com toda teoria de JEE, então vamos direto ao assunto.Particularmente não gosto de livros grandes, eles ficam mais caros e o que eu quero é um preço acessível para todos, enfim até os que recebem mesada podem comprar (pelo menos a minha na época que tinha, os livros eram caros demais rs).

Desconto

Se quiser comprar o exemplar com 30% de desconto no site da Editora, basta usar o código a seguir durante a compra: V00014 e se cadastrar como associado.

Concorra Sorteio será 21/08/2011

Faça um RT da mensagem abaixo e sua inscrição, assim terá a chance de receber um exemplar na sua casa autografado(se preferir). Para sorteio usaremos o random.org e o número sorteado será o ganhador e a verificação do RT  Lembrando que para aqueles que fizeram mais de um cadastro com o mesmo e-mail, não estará concorrendo ao exemplar.

Lançamento do Livro Guia JEE c/ frameworks @RT: @camilolope #JEE #frameworks.Confira:

Lançamento Oficial do Livro JEE com Frameworks

Após, o resultado entrarei em contato pelo e-mail cadastrado e o ganhador tem até 48 hrs para responder, após o envio  do e-mail.Do contrário um novo sorteio será realizado, e o ganhador anterior acabou de perder a chance de receber o livro. : )

Fazer inscrição

Você pode deixar de ganhar se não fizer isso:

  • cadastrar e não fazer o RT;

  • fazer o RT e não se cadastrar;

A qtde de RT fica por sua conta, se quiser fazer mais de RT, ficarei feliz :).

Versão do Livro

  • Paper – R$ 47,20
  • E-book  – R$ 35,40

Eu quero comprar o meu

Onde comprar?

  • Site da Editora
  • Saraiva
  • Cultura
  • Fnac
  • Americanas.com
  • Submarino
  • e outras que eu não lembro rs

Download

Conseguir com a editora amostra de algumas páginas do livro, confiram aqui

Vou ficando por aqui e espero que tenham gostado do post.

Abracos see ya!!

Pré-Lançamento Guia JEE com Frameworks

Olá Pessoal,

Depois de um periodo off, estou de volta nesse inverno do Rio Grande do Sul, que é de matar, qualquer um. O post de hoje é diferente, é sobre o meu próximo filhão hehe. Recebi alguns twitters, da galera com curiosidade de saber do que seria, mas como não tinha a capa final, não adiantava eu postar aqui, como ficou pronta ontem, lá vai o PRÉ-LANÇAMENTO, nas próximas semanas já teremos os exemplares nas melhores livrarias. A seguir falo um pouco sobre o livro, para quem já conhece meu trabalho sabe que eles nascem com base é alguma experiência,necessidade que tive e não encontrei (como foi o Guia do Exame SCJP) daí teve que rolar o “made by Camilo Lopes” :). Não posso deixar de agradecer o apoio do DFJUG em adotar o livro  para sua biblioteca. Agradeço em especial ao Daniel Oliveira presidente da comunidade.

Livro JEE com Frameworks como tudo começou

O projeto nasceu, devido a dificuldade que tive na época dos meus estudos de encontrar em um único livro que abordasse de forma pratica os frameworks mais usados no mercado que consequentemente são aqueles que em qualquer entrevista de emprego o entrevistador vai perguntar:

  • conhece Hibernate, Spring, JSF, Annotations etc?

Não é isso que acontece? Eu passei por isso, e não foram poucas vezes, e o pior de tudo, que eu sabia 1, mas não conhecia os outros três, pois normalmente o conhecimento triangular em frameworks em algumas vagas é o que o entrevistador precisa, porém como muitos estão passando ou já passaram por uma situação de ser 3×1 para empresa, ou seja, você conhece só, mas os demais fica naquela, eu sei um pouco mais posso aprender. Porém, sabemos da realidade que são poucas empresas que se arriscam nesse “eu posso aprender” e o jeito do cara que está correndo atras é ir aprender por contra própria, caso não ele não seja aceito. Isso não é o fim do mundo, é um ciclo do mercado e cada organização tem uma política interna, e temos que respeitar(na época não acreditava nisso, mas aprendi com o tempo).

Com um pouco de revolta na época, de ter comprado 3,4,5 livros diferentes para aprender cada framework, e ainda não tinha um que conecta de bem de forma o uso dos frameworks em conjunto e eu tinha que ir montando a cabeça, gastando mais tempo que o necessário, pois no inicio nem tudo são flores. Partindo desse contexto, pensei, bem que eu deveria escrever um livro, pois acredito que há alguém passando e tendo as mesmas dificuldades que tive, e não aguenta mais comprar na amazon.com para esse fim. Ahh claro, há muitos artigos, posts de blogs na internet que ajudam. Mas, um artigo, sempre será um artigo e não tem como objetivo substituir um livro, assim como um post não tem como foco substituir um livro, cada macaco no seu galho.Enfim, partindo do problema de ter um livro para cada framework que eu precisasse aprender, o qual achava ruim, na verdade péssimo, até porque no inicio eu precisava, aprender o ABC, o sufuciente para fazer uma boa integração e partindo desse ABC eu posso ir aprofundando aos poucos e a medida que novos desafios vão surgindo vou aprendendo, e não querer ver tudo de uma vez( não dar para colocar um JavaDoc na cabeça, ou dar?), é assim que aprendemos na escola o ABC primeiro, não é verdade? Mas, a notícia que tive era ruim, não encontrei nada e tive que ir escavando usando uma par e fazendo as devidas anotações, depois começava a juntar o quebra cabeça, errava mais do que acertava, mas aprendia com os erros, mas a dor sempre é grande. E assim nasceu naturalmente, o Guia JEE com Frameworks.

O objetivo

O objetivo é muito simples. Guiar o leitor de forma prática desenvolver aplicações Java/JEE usando os frameworks mais requisitados no mercado. Ao final do livro acreditamos que o leitor já seja capaz de trabalhar de forma segura com o que foi abordado.

O que vou ver no livro?

Você vai ver como usar o Hibernate, JSF, SpringSecurity nas suas aplicações JEE, no inicio do livro considero que o leitor é leigo e vamos trabalhando com Java Application, e logo em seguida migramos de forma confortável para JEE, mantendo o uso do já foi aprendido e ampliando. Há exercícios praticos que é chamado de “Trabalho do dia” não é nada de fazer algo como 2+2 e sim praticar o que já foi visto e que motive o leitor ir só um pouco além e consultar API do framework para buscar as respostas. O motivo, é simular a vida real de todo desenvolvedor, buscar resolver os problemas da melhor forma possível usando ferramentas core de durante DEV.

O não vou ver no livro?

  • Não queira sair do livro, um especialista nos frameworks abordado, o foco é colocar você nos trilhos da melhor forma possível.

  • Não queira aprender Java, Servlet, JSP, este não é o objetivo, e vou considerar que o leitor já conheça Java e Servlet & JSP;

Quem pode ler?

Se você já viu um pouco de Servlet & JSP e se sente perdido para onde ir em JEE, com tantos frameworks, mas sem saber direito o que cada um faz e qual a melhor forma de aprender cada um em uma determinada ordem, este livro é para você.

A escrita

Bem, quem já conhece meus livros, sabe que uso uma linguagem informal e pratica, além disso coloco dentro dos codes explicações in line, por acreditar que explicando no “olho do furação” pode trazer efeitos de fixação melhor para o leitor. Nesse eu busquei evitar códigos quebrando entre as paginas e fiz um bom esforço de colocar o máximo possível em uma única página, há codes que diminui um pouco a fonte respeitando a legibilidade, somente para manter todo code possível em uma única página, claro que há codes que não dar. Para alguns que já foram aprensentados, foram omitidos os trechos e apenas o code novo é visto. Mas, não se preocupe que eu aviso quando isso acontece.

O livro não substitui um outro livro que abordar por completo um dos frameworks abordados aqui, até porque não temos esse foco, então se você deseja ver tópicos mais avançados, terá que dar uma olhada na documentação ou buscar livros mais especializamos, porém o que você aprender aqui é o que servirá para se tornar um Advanced-X.

Ganhe um exemplar

Se você quiser concorrer à um exemplar que será sorteado no dia do lançamento faço o seu cadastro no form abaixo e Re-Twitter, quanto mais você RT, mas chances de ganhar.

Faça sua inscrição

“Pré-Lançamento do Livro Guia JEE c/ frameworks @RT: @camilolope #JEE #frameworks.

https://blog.camilolopes.com.br/pre-lancamento-guia-jee-com-frameworks/” (use um encurtador de url de sua preferencia )

Vou ficando por aqui, espero que tenham gostado do post. see ya!

Abracos,

Você vai ver como usar o Hibernate, JSF, SpringSecurity nas suas aplicações JEE, no inicio do livro considero que o leitor é leigo e vamos trabalhando com Java Application, e logo em seguida migramos de forma confortável para JEE, mantendo o uso do já foi aprendido e ampliando. Há exercícios praticos que é chamado de “Trabalho do dia” não é nada de fazer algo como 2+2 e sim praticar o que já foi visto e que motive o leitor ir só um pouco além e consultar API do framework para buscar as respostas. O motivo, é simular a vida real de todo desenvolvedor, buscar resolver os problemas da melhor forma possível usando ferramentas core de durante DEV.

 

O não vou ver no livro?

  • Não queira sair do livro, um especialista nos frameworks abordado, o foco é colocar você nos trilhos da melhor forma possível.

  • Não queira aprender Java, Servlet, JSP, este não é o objetivo, e vou considerar que o leitor já conheça Java e Servlet & JSP;

 

Quem pode ler?

Se você já viu um pouco de Servlet & JSP e se sente perdido para onde ir em JEE, com tantos frameworks, mas sem saber direito o que cada um faz e qual a melhor forma de aprender cada um em uma determinada ordem, este livro é para você.

 

 

A escrita

Bem, quem já conhece meus livros, sabe que uso uma linguagem informal e pratica, além disso coloco dentro dos codes explicações in line, por acreditar que explicando no “olho do furação” pode trazer efeitos de fixação melhor para o leitor. Nesse eu busquei evitar códigos quebrando entre as paginas e fiz um bom esforço de colocar o máximo possível em uma única página, há codes que diminui um pouco a fonte respeitando a legibilidade, somente para manter todo code possível em uma única página, claro que há codes que não dar. Para alguns que já foram aprensentados, foram omitidos os trechos e apenas o code novo é visto. Mas, não se preocupe que eu aviso quando isso acontece.

 

O livro não substitui um outro livro que abordar por completo um dos frameworks abordados aqui, até porque não temos esse foco, então se você deseja ver tópicos mais avançados, terá que dar uma olhada na documentação ou buscar livros mais especializamos, porém o que você aprender aqui é o que servirá para se tornar um Advanced-X.

 

Se você quiser concorrer à um exemplar que será sorteado no dia do lançamento faço o seu cadastro no form abaixo e Re-Twitter, quanto mais você RT, mas chances de ganhar.

 

Pré-Lançamento do Livro Guia JEE c/ frameworks @RT: @camilolope #JEE #frameworks.

<link>

 

Vou ficando por aqui, espero que tenham gostado do post.

 

Abracos,

Uma simples aplicação Hibernate + JSF + poolConexao

olá Pessoal,

Bem, hoje resolvi fazer um post, do qual eu já tive problemas e acredito que alguém já passou ou passa por isso. Vc nunca ficou perdido nos passos de como desenvolver uma nova aplicação usando um conjunto de frameworks? Tipo, por onde começar? Quando você faz isso com frequência não tem como esquecer, mas não é a realidade, nem todo dia estamos criando novas aplicações e alguns processos base, “dão branco”. Eu sofria com isso, quando precisava iniciar uma nova app do zero. Claro que hoje temos ferramentas que nos ajuda. Mas, vamos esquecer essas ferramentas de auxilio e pensar em um ambiente que não temos ela disponível.

O objetivo deste post, é documentar tópicos  para que você possa montar uma pequena estrutura para o ambiente de produção e ao mesmo tempo ir reelembrando aquilo que seu cerebro deixou no “pool” dele. Usarei o Hibernate + JSF tendo o pool de conexão implementado.

note: Claro em projetos reais e grandes não fazemos isso, para não perder tempo e tb não é nada legal. Porém, se você está começando agora a fazer aplicações sem muita experiência, procure sempre lembrar a funcionalidade de cada framework dentro do projeto e quando eles aparecem no desenvolvimento isto é tão importante qto saber usar cada um deles.

Lets go…

note: vou considerar os passos abaixo para um ambiente de produção, pois em testes raramente temos problemas. Um deles é o open session view que só descobrir ele quando subir minha app.

Steps

  1. Ter o BD e tabelas criadas

  2. criar a estrutura do projeto JSF Project

  3. Adicionar as bibliotecas dos frameworks

  4. criar o bean e fazer os annotations (não queira usar xml )

  5. criar o JNDI META-INF/context.xml

  6. criar o pool de conexao com o JNDI em web.xml (Resources)

  7. atualizar o hibernate.cfg.xml com o JNDI/Pool de conexão.

    current_session_context_class: thread

    connection.datasource: java:com/env/jdbc/nomejndi

    transaction.factory_class:org.hibernate.transaction.JDBCTransactionFactory

    jdbc.batch_size:0

  8. criar o DAO Generico com Hibernate no package dao

  9. Criar a classeDAO para fazer a persistencia no BD

  10. criar o managebean e controlador para JSF

  11. iniciar a construção do front end com JSF.

  12. Implementar o SpringSecurity (optional)

  13. Implementar o Filter para evitar o open session view

Claro que nesses passos há temos apenas  os pontos chaves que acabam reativando o conhecimento que está la no “pool de string” do seu cerebro.

Visite a nossa as categorias abaixo no blog que boa parte dos assuntos listados nos passos estão nas respectivas categorias:

https://blog.camilolopes.com.br/category/hibernate/

https://blog.camilolopes.com.br/category/java/

https://blog.camilolopes.com.br/category/javaee/

https://blog.camilolopes.com.br/category/jpa/

https://blog.camilolopes.com.br/category/jsf/

Abracos, see you next post. 🙂