JSP + Hibernate

4 respostas
dionlan

Olá,

Gostaria de saber como listo os dados de uma persistencia em hibernate em uma página jsp, tenho uma classe ListarAlunos, e na index.jsp chamo esse método pelo:

List t = new ListarAlunos().listarAluno(); out.println(t);

Quando executo aparece algo tipo:
[ProjetoTeste.Aluno@7371b4ca, ProjetoTeste.Aluno@2e1474fc, ProjetoTeste.Aluno@410c6406]

Será que tem que converter os tipos de dados? Tentei aqui mas não tive sucesso.

vlwww, obrigadão.

4 Respostas

pvrsouza

Ao inves de dar o print logo de cara no objeto T, tenta guardar ele numa variavel ( com cast se precisar ) e acessa os métodos dele.

Eric_Yuzo

Os colchetes e a vírgula entre os itens é gerado pelo método toString() da lista, e o ProjetoTeste.Aluno@… está sendo gerado pelo toString() de Object. Teria que sobrescrever o método toString() em sua classe “Aluno” para retornar uma String com suas características.

Por exemplo:

//Dentro da classe Aluno public String toString() { //Exemplo que retorna o nome do Aluno quando toString() for invocado return this.getNome(); //Estou supondo que exista o atributo nome }
Aí sua saída seria algo do tipo:

[João, Maria, José]

Agora para formatar melhor seu texto, poderia seguir a dica do pvrsouza e montar uma String com StringBuilder.

pvrsouza

Agora seria bom que tu postasse teu código para que possamos opinar.

P.S: Valeu pela citação Eric!

Abraços!

dionlan

Excelente..
Funcionou perfeitamente com o método toString () que de fato estava faltando.

Apenas com:

out.println(new ListarAlunos().listarAluno());
já deu pra listar os dados, agora o que falta é organizar em uma tabela por exemplo. A classe ListarAlunos é essa:
package ProjetoTeste;
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Classe que irá fazer a listagem do banco de dados
 * @author Dionlan
 */

import java.util.ArrayList;
import java.util.List;
import org.hibernate.*;
import org.hibernate.cfg.*;

public class ListarAlunos {

public ArrayList listarAluno () {
    List listaAluno = new ArrayList (); 
   try {
            /**
             * SessionFactory armazena os mapeamentos e as configuracoes do hibernate
             * objeto session armazenando os mapeamentos
             * Configuration() = recebe os parametros de configuracao do XML, do hibernate
             * por meio do configure
             * buildSessionFactory() retorna os objeto do tipo SessionFactory, obter os dados da sessao
             */
            SessionFactory session = new Configuration().configure().buildSessionFactory();

            /**
             * Abrindo uma sessao: abrindo session pelo session.openSession
             * estando apto a iniciar o processo de manipulacao no banco de dados
             */

            Session sessao = session.openSession();

          //  List<Aluno> listaAluno = new ArrayList (); //pegar tdos os dados e trazer em forma de lista
            /**
             * armazenando todos os dados do banco em dentro da listaAluno
             */
            listaAluno = sessao.createQuery("from Aluno").list();

            String dados="";
            int tamanhoLista = listaAluno.size();
            for(int i=0; i<tamanhoLista; i ++){

                Aluno aluno = (Aluno) listaAluno.get(i);
                System.out.println(aluno.getAlu_codigo()+"-"+aluno.getAlu_cidade()+"-"+aluno.getAlu_fone()+"-"+aluno.getAlu_nome());
                
            }
            /**
             * fechando sessao
             */
            sessao.close();


        }catch (Exception e){

           e.printStackTrace();
        }
return  (ArrayList) listaAluno;
    }
}

Era a classe principal, agora está apenas o método de listarAluno, que estou chamando no jsp, como essa estrutura pode ser otimizada?

Na verdade é de uma aplicaçãozinha desktop e que estou tentando manipular com jsp e mais pra frente com servlets, é coerente tentar fazer essa transição na doida assim? :twisted:

Obrigadão aí Eric Yuzo e pvrsouza pelas respostas, ajudaram mto. :D

Criado 3 de novembro de 2010
Ultima resposta 4 de nov. de 2010
Respostas 4
Participantes 3