Quais exceções vc quer tratar?!? As mesma desse código?!?
Acho que não.
Porem o hibernate levanta uma exceção chamada HibernateException.
Mas vc pode colocar um try {} catch (Throwable e){} e pegar tudo de uma vez…
Vlw…eh como vc faz pra saber se esta conectado ou nao…ou qual o SQLException q ele gera…
rodrigoallemand
Se a sua session estiver válida, ela está conectada!
Caso contrário, alguma exceção será levantada nesse método, por exemplo...
Segue meu HibernateSessionFactory pra te auxiliar...
publicclassHibernateSessionFactory{/** * Construtor no-arg * Protegido para evitar a criação da classe */protectedHibernateSessionFactory(){super();}/* Constante de caminho do arquivo de configuração do Hibernate */privatestaticStringDEFAULT_CONFIG_FILE_LOCATION="/hibernate.cfg.xml";/* Threads que controlarão a sessão e a transação */privatestaticfinalThreadLocal<Session>threadSession=newThreadLocal<Session>();privatestaticfinalThreadLocal<Transaction>threadTransaction=newThreadLocal<Transaction>();/* Variaveis do Hibernate */privatestaticfinalConfigurationcfg=newConfiguration();privatestaticSessionFactorysessionFactory;/** * Método que retorna a instancia da Sessão utilizando o arquivo default do hibernate (/hibernate.cfg.xml). * @return Session * @throws SessionFactoryException */publicstaticSessiongetCurrentSession()throwsHibernateException{returnHibernateSessionFactory.getCurrentSession(DEFAULT_CONFIG_FILE_LOCATION);}/** * Método que retorna a instancia da Sessão. * @return Session * @throws SessionFactoryException */publicstaticSessiongetCurrentSession(StringconfigFile)throwsHibernateException{Sessionsession=threadSession.get();try{if(session==null||!session.isOpen()){if(sessionFactory==null){try{cfg.configure(configFile);sessionFactory=cfg.buildSessionFactory();}catch(Exceptione){throwe;}}session=(sessionFactory!=null)?sessionFactory.openSession():null;threadSession.set(session);}}catch(Exceptione){thrownewHibernateException(e);}returnsession;}/** * Método que fecha a sessão do Hibernate. * @throws SessionFactoryException */publicstaticvoiddoCloseSession()throwsHibernateException{Sessionsession=threadSession.get();threadSession.set(null);try{if(session!=null){session.close();}}catch(Exceptione){thrownewHibernateException(e);}}/** * Método que inicia a transação do Hibernate. * @throws SessionFactoryException */publicstaticvoiddoBeginTransaction()throwsHibernateException{Transactiontx=threadTransaction.get();try{if(tx==null){tx=getCurrentSession().beginTransaction();threadTransaction.set(tx);}}catch(Exceptione){thrownewHibernateException(e);}}/** * Método que executa o rollback da transação. * @throws SessionFactoryException */publicstaticvoiddoRollback()throwsHibernateException{Transactiontx=threadTransaction.get();try{if(tx!=null&&!tx.wasCommitted()&&!tx.wasRolledBack()){tx.rollback();threadTransaction.set(null);}}catch(Exceptione){thrownewHibernateException(e);}}/** * Método que commita a transação. * @throws SessionFactoryException */publicstaticvoiddoCommit()throwsHibernateException{Transactiontx=threadTransaction.get();try{if(tx!=null&&!tx.wasCommitted()&&!tx.wasRolledBack()){tx.commit();threadTransaction.set(null);}}catch(Exceptione){doRollback();thrownewHibernateException(e);}}}
R
raphaelwc
Queria pegar o SQLException mas não to conseguindo...
O Código que vc me passou com umas alterações...
packagecom.experience.softwares.sgsc;importjava.io.IOException;importjava.io.InputStream;importjava.util.Properties;importorg.hibernate.HibernateException;importorg.hibernate.Session;importorg.hibernate.SessionFactory;importorg.hibernate.Transaction;importorg.hibernate.cfg.AnnotationConfiguration;importcom.experience.softwares.sgsc.model.Cliente;publicclassHibernateSessionFactory{privatestaticbooleanLeuProperties=false;privatestaticStringhost;privatestaticStringporta;privatestaticStringbd;privatestaticStringusuario;privatestaticStringsenha;privatestaticvoidlerProperties(){InputStreamstream=HibernateUtility.class.getResourceAsStream("config.properties");System.out.println("Leu Properties...");Propertiesprops=newProperties();try{props.load(stream);stream.close();}catch(IOExceptione){System.out.println(e.getMessage());e.printStackTrace();}host=props.getProperty("mysql.host");porta=props.getProperty("mysql.port");bd=props.getProperty("mysql.bd");usuario=props.getProperty("mysql.user");senha=props.getProperty("mysql.password");setLeuProperties(true);}protectedHibernateSessionFactory(){super();}/* Threads que controlarão a sessão e a transação */privatestaticfinalThreadLocal<Session>threadSession=newThreadLocal<Session>();privatestaticfinalThreadLocal<Transaction>threadTransaction=newThreadLocal<Transaction>();/* Variaveis do Hibernate */privatestaticSessionFactorysessionFactory;/** * Método que retorna a instancia da Sessão utilizando o arquivo default do hibernate (/hibernate.cfg.xml). * @return Session * @throws SessionFactoryException *//** * Método que retorna a instancia da Sessão. * @return Session * @throws SessionFactoryException */publicstaticSessiongetCurrentSession()throwsHibernateException{Sessionsession=threadSession.get();try{if(session==null||!session.isOpen()){if(sessionFactory==null){if(!isLeuProperties()){lerProperties();}try{Stringurl="jdbc:mysql://"+host+":"+porta+"/"+bd;AnnotationConfigurationcfg=newAnnotationConfiguration();cfg.addAnnotatedClass(Cliente.class);cfg.setProperty("hibernate.dialect","org.hibernate.dialect.MySQLDialect").setProperty("hibernate.connection.driver_class","com.mysql.jdbc.Driver").setProperty("hibernate.connection.url",url).setProperty("hibernate.connection.username",usuario).setProperty("hibernate.connection.password",senha).setProperty("hibernate.show_sql","true").setProperty("hibernate.format_sql","true").setProperty("hibernate.generate_statistics","true").setProperty("hibernate.use_sql_comments","true");sessionFactory=cfg.buildSessionFactory();}catch(Exceptione){throwe;}}session=(sessionFactory!=null)?sessionFactory.openSession():null;threadSession.set(session);}}catch(Exceptione){thrownewHibernateException(e);}returnsession;}/** * Método que fecha a sessão do Hibernate. * @throws SessionFactoryException */publicstaticvoiddoCloseSession()throwsHibernateException{Sessionsession=threadSession.get();threadSession.set(null);try{if(session!=null){session.close();}}catch(Exceptione){thrownewHibernateException(e);}}/** * Método que inicia a transação do Hibernate. * @throws SessionFactoryException */publicstaticvoiddoBeginTransaction()throwsHibernateException{Transactiontx=threadTransaction.get();try{if(tx==null){tx=getCurrentSession().beginTransaction();threadTransaction.set(tx);}}catch(Exceptione){thrownewHibernateException(e);}}/** * Método que executa o rollback da transação. * @throws SessionFactoryException */publicstaticvoiddoRollback()throwsHibernateException{Transactiontx=threadTransaction.get();try{if(tx!=null&&!tx.wasCommitted()&&!tx.wasRolledBack()){tx.rollback();threadTransaction.set(null);}}catch(Exceptione){thrownewHibernateException(e);}}/** * Método que commita a transação. * @throws SessionFactoryException */publicstaticvoiddoCommit()throwsHibernateException{Transactiontx=threadTransaction.get();try{if(tx!=null&&!tx.wasCommitted()&&!tx.wasRolledBack()){tx.commit();threadTransaction.set(null);}}catch(Exceptione){doRollback();thrownewHibernateException(e);}}publicstaticbooleanisLeuProperties(){returnLeuProperties;}publicstaticvoidsetLeuProperties(booleanleuProperties){LeuProperties=leuProperties;}}
Aonde eu pego a Exception???
To tentando aqui:
publicclassTeste{// static DaoFactory factory = new DaoFactory(); // @jve:decl-index=0://static ClienteDao dao =factory.getClienteDao(); // @jve:decl-index=0:publicstaticvoidmain(String[]args){try{Sessionsession=HibernateSessionFactory.getCurrentSession();if(!session.equals(null)){System.out.println("Banco De Dados: Conectado ");}else{System.out.println("Banco De Dados: Desconectado ");}}catch(JDBCExceptione){SQLExceptionsql=e.getSQLException();System.out.println("oi");System.out.println("Banco De Dados: Desconectado ");}/*List<Cliente> clientes = dao.listaTudo(); for (Cliente cliente : clientes) { System.out.println(cliente.getNome()); System.out.println(cliente.getDtaCadastro()); } Cliente oi = new Cliente(); GregorianCalendar calendar = new GregorianCalendar(); oi.setNome("José"); oi.setDtaCadastro(calendar.getTime()); dao.adiciona(oi);*/}}
Mas ele n cai na Exception...
Precisava das Exception porque estou migrando do JDBC pro Hibernate e com o JDBC eu sabia pq ele n estava conectando dai n entrava no programa...
R
raphaelwc
Mesmo ele não conectando a session abre de qualquer jeito…
R
raphaelwc
N consegui ainda…
Mesmo n conectando ele diz q a session existe e está conectada