Completed

Criar programa jsp que acesse banco de dados através do hibernate com pool C3p0

Published on the August 14, 2013 in IT & Programming

About this project

Open

Criar um programa escrito em jsp e classes java , usando hibernate com acesso comprovado ao banco de dados postgres usando pool de conexões c3p0

o fluxo imaginado é :  pagina.jsp > interceptação do servlet filter hibernate > classes java (sets e gets) > acesso ao banco  com c3p0 > retorna pagina jsp.


Do prazo:
========
é um programa de teste simples para quem realmente tem experiencia com JSP e usa o hibernate/c3p0. Preciso deste projeto concluído em 10 dias.

Especificação, condições e requisitos do projeto:
===================================================

- programador deve ter experiencia em jsp e hibernate

- o programador deve descrever o ambiente usado, pois o sistema deve rodar no meu ambiente tambem:
- versao do tomcat, hibernate, java e postgres, driver jdbc
- meu ambiente: tomcat 6, hibernate 4, java 6, postgres 9


- o programa não pode travar o banco de dados:
- no postgres as conexões do pool nunca devem ficar em modo "idle in transaction"
- ao iniciar o pool c3p0: o postgres deve ter conexoes somente em modo "idle".


- O programa deve permitir inserir dados e depois acessar uma tabela no banco de dados e obter nome através de pesquisa por e-mail. 
--- Ex de tabela :  tabela usuario (int id, vchar nome, vchar email )
--- a chave primaria deve ser gerenciada pelo hibernate usando @anotations

- o programa não precisa de formulario. A inclusão do usuario e a exibição dos dados pode ser bem simples .





--- Ex : jsp :  <%

    // parteAleatoria necessaria para executar N vezes a pagina para poder testar o pool com o httperf.

    String nome = "jose da silva"+parteAleatoria;
    String email = "jose@temp.com.br"+parteAleatoria;

  Usuario u = usuario.criar( nome , email);
    
  out.println("pesquisando usuario com email :" + email );
    
  u.pesquisa(email);

    if (u!=null)
    out.println ("usuario encontrado: nome: " + nome);
    

    // exibir estatísticas de hibernate que comprovam que o sistema está pegando conexão do pool
    // mostrar se foi executado um getTransaction
    // mostrar se foi executado um beginTransaction 



%>




- o programa deve utilizar classes e métodos do hibernate que mostrem que estão acessando o banco de dados através do pool c3p0.
--- O pool do c3p0 deve ter 4 conexoes
- o programa deve pegar conexoes do pool, bem como criar novas conexoes, por exemplo usando:
---- transaction = session.beginTransaction(); 
---- transaction = session.getTransaction();




- o programa em JSP deve ser bastante simples, chamando as classes e métodos necessárias
- a estrutura que eu imagino é a seguinte:
==============================================
--- pagina jsp : teste.jsp
--- classes : uma ou mais classes que façam o acesso ao banco de dados usando hibernate c3p0
------- as classes devem usar anotations, setters e getters
--- arquivo xml de configuração hibernate com as configurações de acesso ao banco e c3p0
--- classe hibernateUtils = padrao hibernate (SessionFactory)
--- classe hibernateFilter = um filtro servlet para pegar as requisicoes  conforme padrao OSIV usando SessionFactory (https://community.jboss.org/wiki/OpenSessionInView)


-- não realizo o pagamento sem ver o projeto concluído.
============================================================
-- Como prova eu quero ver o código bem como o resultado, podendo ser exibido através do teamviewer:
---------- mostrar a execucao da pagina por cerca de 50 vezes usando o httperf ($ httperf --server teste.com.br/teste.jsp --port 8080 --num-conns 50 --rate 1 ),
----------mostrar logs do tomcat,
--------- mostrar resultados no pgadmin statistics (ver conexoes em idle), monitorando também em tempo real para ver o uso do pool ao rodar o httperf.
--------- Mostrar resultados das inclusoes no BD
----------mostrar resultado que comprove que o acesso ao banco foi feito usando uma conexao já existente no pool do c3p0



-- como resultado eu espero:
========================
---- conexões pegando do Pool, e aumentanto a demanda, criando novas conexoes (config: acquireIncrement=1)
---- conexão ao banco postgres usando o c3p0 comprovada (logs e métodos)
---- conexoes sem "idle in transaction"  no banco de dados
---- o programa jsp não deve travar o tomcat, nem estourar o heap de memoria
--- o programa jsp (test.jsp) deve ser interceptado pelo servlet filter hibernate.
---- fornecer o codigo fonte completo para eu colocar no meu ambiente de desenvolvimento

Category IT & Programming

Delivery term: August 24, 2013

Skills needed