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?
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’’