Usando informações do Banco de Dados[RESOLVIDO(Hibernate:Query)]

Olá, desculpe-me pela dúvida básica mas é que apenas vi tópicos ensinando a gravar arquivos com Hibernate e ao meu ver eu entendi bem, mas agora gostaria de saber como faço para usar as informações gravadas no banco de dados.

Eu sei que posso fazer com PreparedStatements(select * from table);
mas eu queria saber se da pra fazer isso com o Hibernate e voltar os valores do banco de dados para Objects.
se o hibernate não fizer isso como eu transformo oque pesquisei com PreparedStatements em Objects?

Desde já agradeço.
Aliás meu primeiro post^^

Mark,

Veja se é isso que você deseja:

DAO:

    public List listarShinigami() {
        Session session = factory.openSession();   
        // from Shinigami  (Shinigami é o nome da Classe)
        List result = session.createQuery("from Shinigami").list();
        session.flush();   
        session.close();   
        return result;
    }

Main:

List shinigamiLst = ShiniCt.listarShinigami();
                saida = "Shinigamis:\n";
                for(int i = 0; i < shinigamiLst.size(); i++) {
                    Shinigami theShinigami = (Shinigami) shinigamiLst.get(i);
                    saida += "===>" + theShinigami.getId() + " - " + theShinigami.getNome() + "\n";
                } 
                JOptionPane.showMessageDialog(null, saida, "", JOptionPane.INFORMATION_MESSAGE);

Este é um exemplo que eu fiz, o código dele não está dos mais bonitos, mas espero que tenha conseguido te ajudar.

Boa sorte.

Eu estou fazendo meu código com o Hibernate Annotations sem as classes DAO, é realmente necessario faze-las ou não tem problema como estou fazendo.

Onde eu coloco esse Código acima?
Eu tenho as classes
Dados < contem os dados do objeto
Teste < testes =/
HibernateUtil < Uma classe que tem o método getSession()

Mark,

Se é realmente necessário eu não sei, até porque também estou começando a caminhar com o Hibernate Annotations, mas eu achei mais fácil, assim com o DAO.

Quanto a esse código, eu fiz um exemplobem simples utilizando swing, e eu coloquei ele no meu método main.

Se você quiser, eu posso te mandar esse exemplo para você dar uma analisada. Já aviso que ele é bem simples.
Caso queira, mande seu email pra mim por uma MP.

Espero ter ajudado.

Bem depois de testar as partes do código obetenho erro nessa parte

List DadosPessoais = dados.listarDados(); for(int i = 0; i < DadosPessoais.size(); i++) { String saida = "Dados:\n"; dados Dados = (dados) DadosPessoais.get(i); saida += "===>" + Dados.getId() + " - " + Dados.getNome() + "\n"; JOptionPane.showMessageDialog(null, saida, "", JOptionPane.INFORMATION_MESSAGE); }
Eu mudei as palavras pro meu programa o certo é assim?

Mark,

Qual erro que dá?

O eclipse já acusa erro nas linha

List DadosPessoais = dados.listarDados(); [u]String saida = "Dados:\n";[/u] for(int i = 0; i < DadosPessoais.size(); i++) { dados Dados = (dados) DadosPessoais.get(i); saida += "===>" + Dados.getId() + " - " + Dados.getNome() + "\n"; JOptionPane.showMessageDialog(null, saida, "", JOptionPane.INFORMATION_MESSAGE); }
diz Error on token “;”, { expected after this token
e se eu coloco o “{” e tiro o “;”
Syntax error, insert “;” to complete FieldDeclaration
se eu deixo ;{
da erro em execução

Initial SessionFactory creation failed.org.hibernate.InstantiationException: could not instantiate test objectmodelo.dados Exception in thread "main" java.lang.ExceptionInInitializerError at util.HibernateUtil.<clinit>(HibernateUtil.java:20) at modelo.dados.listarDados(dados.java:46) at modelo.dados.<init>(dados.java:52) at teste.HibernateTeste.main(HibernateTeste.java:16) Caused by: org.hibernate.InstantiationException: could not instantiate test objectmodelo.dados at org.hibernate.engine.UnsavedValueFactory.instantiate(UnsavedValueFactory.java:25) at org.hibernate.engine.UnsavedValueFactory.getUnsavedIdentifierValue(UnsavedValueFactory.java:44) at org.hibernate.tuple.PropertyFactory.buildIdentifierProperty(PropertyFactory.java:44) at org.hibernate.tuple.entity.EntityMetamodel.<init>(EntityMetamodel.java:123) at org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:434) at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:109) at org.hibernate.persister.PersisterFactory.createClassPersister(PersisterFactory.java:55) at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:226) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1294) at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:915) at util.HibernateUtil.<clinit>(HibernateUtil.java:16) ... 3 more Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at org.hibernate.engine.UnsavedValueFactory.instantiate(UnsavedValueFactory.java:22) ... 13 more Caused by: java.lang.NullPointerException ... 18 more
eu recebi seu email e agora vou analisar ^^ obrigado e se puder me diga oque acontece com esse erro

Ameba: ehehe

Eu costumo realizar ‘select’s’ assim:

st = cn.prepareStatement("SELECT idusuario, usuario FROM usuarios ORDER BY idusuario");
			rs = st.executeQuery();
			while(rs.next()){
				UserData user = new UserData();
				user.setIdUsuario(rs.getInt("idusuario"));
				user.setUsuario(rs.getString("usuario"));
				users.add(user);
			}

Espero q ajude…

Eu sei sobre o método PreparedStatement mas eu achei mais interessante usar o Hibernate para não ter que me preocupar com SQL
^^

mas eu vou testar o seu método e vou ver obrigado

Uma dúvida de iniciante.
No exemplo do jimmy, ele passou os atributos vindos da tabela para um objeto “user” da classe “UserData”.
Levando-se em consideração que eu estou fazendo uma aplicação Desktop e que essas informações seriam jogadas na tela via swing; eu não precisaria então criar a classe UserData, instanciá-la e atribuir os valores vindos da query para então depois passar para meus JTextField? Poderia jogar direto?

Isso soa um tanto “procedural” não é? Mas como eu poderia “orientar à objeto” esse exemplo?

Abraços,

Marcos Antonio Campos Jordão’’