Ola, acabei de iniciar meus estudo na persistência de dados e estou utilizando o FrameWork Hibernate, quando executa a operação de inserir dados no banco, os dados são inseridos com sucesso, porem a construção nunca termina e não da nenhum erro, gostaria de saber como fazer para a aplicação terminar.
Também queria saber kkkkk vc achou uma solução? Pois a minha foi fazer o System.exit(0)
javaflex
Sem postar o código fica mais difícil alguém ajudar. Pode ser algo relacionado a falta de commit ou mal uso de alguma tranqueira do hibernate, como mapeamentos, configurações, falta de flush, etc.
Jeanderson_Silva
@javaflex o meu tá assim:
o minha configuração do hibernate é esta:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory><propertyname="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property><propertyname="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property><propertyname="hibernate.connection.url">jdbc:mysql://localhost:3306/cadastro?zeroDateTimeBehavior=convertToNull</property><propertyname="hibernate.connection.username">root</property><propertyname="hibernate.show_sql">false</property><mappingclass="model.Usuario"/></session-factory></hibernate-configuration>
Eu tenho a Classe HibernateUtil que é criada sozinha pelo netbeans. Minha entidade:
@Entity@Table(name="usuario")publicclassUsuarioimplementsSerializable{@Id@GeneratedValueprivateintid;privateStringnome;privateintidade;//gets e sets}
e após isso eu testei assim:
publicstaticvoidmain(String[]args){Sessionsessao=HibernateUtil.getSessionFactory().openSession();Transactiont=sessao.beginTransaction();List<Usuario>usuarios=sessao.createQuery("from Usuario").list();usuarios.forEach(usuario->{System.out.println(usuario);});t.commit();sessao.close();//mesmo acontecendo com sucesso, continua aparecendo um monte de log no//no console, então tenho q parar a execução aqui.System.exit(0);}
Quando eu executo uma Query, q nem o exemplo acima fica assim:
veja que depois de mostrar o resultado e tudo, ainda continua em execução,
javaflex1 like
Não deve ter haver com o problema, mas não precisa de begin trans/commit para selects.
Como assim continua em execução? Os logs que você mostrou são anteriores aos prints do resultado.
Executando a aplicação de verdade por fora do Netbeans ocorre o mesmo?
Em HibernateUtil não tem algo prendendo sua aplicação? SessionFactory por exemplo costuma ser um objeto pesado que fica vivo o tempo todo na aplicação.
Jeanderson_Silva
então @javaflex e que quando faz query não parece mais log após o resultado, mas o programa continua rodando normal, mas ao pensar, acabei descobrindo como, segue o código:
publicstaticvoidmain(String[]args){Sessionsessao=HibernateUtil.getSessionFactory().openSession();Transactiont=sessao.beginTransaction();List<Usuario>usuarios=sessao.createQuery("from Usuario").list();usuarios.forEach(usuario->{System.out.println(usuario);});sessao.close();//aqui para de vez a execução do programa.HibernateUtil.getSessionFactory().close();}