Pessoal estou com um problema no meu aplicativo desktop, ele utiliza o hibernate.
O problema é o seguinte
- Faço uma query no banco e jogo os dados na tabela, por exemplo os dados de um cliente
- Sem fechar o programa altero algum dado desse cliente no banco por meio de outro sistema (por exemplo um sistema web em php que usamos aqui)
- Depois faço a mesma query no aplicativo desktop que usa hibernate.
- O dado alterado pelo sistema php nao aparece
Porem se eu abro e fecho o sistema desktop, quando faço a query ele atualiza normal.
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://XXXXXXXX:3306/XXX</property>
<property name="hibernate.connection.username">XXXXXXXXXX</property>
<property name="hibernate.connection.password">XXXXXXXXXX</property>
<property name="show_sql">true</property>
Meu HibernateUtil - preciso carregar usuario e senha de um arquivo externo:
public class HibernateUtil {
private static SessionFactory sessionFactory = null;
static {
// Configurações iniciais de caminho dos diretórios e arquivos
URL url = HibernateUtil.class.getProtectionDomain().getCodeSource().getLocation();
File myFile = null;
try {
myFile = new File(url.toURI());
} catch (Exception ex) {
}
File dir = myFile.getParentFile();
File xml = new File(dir, "hibernate.cfg.xml");
/*
* sessionFactory = new AnnotationConfiguration() .configure("br/com/netradiobrasil/pcp/" +
* "hibernate/hibernate.cfg.xml") .buildSessionFactory();
*/
sessionFactory = new AnnotationConfiguration().configure(xml).buildSessionFactory();
}
public static Session getSession() {
return sessionFactory.openSession();
}
}
Session s = HibernateUtil.getSession();
Criteria c = s.createCriteria(Solicitacao.class, "s");
//Adiciona Restrictions...
List<Solicitacao> ls = c.list();
s.close();
Tentei adicionar as seguinte linhas no meu hibernate.cfg.xml sem sucesso:
<property name="hibernate.cache.use_query_cache">false</property>
<property name="hibernate.cache.use_second_level_cache">false</property>
<property name="hibernate.cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
Estou utilizando Lazy nos relacionamentos...
Sempre que vou fazer uma query eu dou um get session, faço a query do um close
Alguem sabe oq esta errado??
Agradeço!
EDIT:
Resolvido
Depois de Adicionar as linhas que ativam o c3p0 tudo funcionou perfeitamente