Bom dia pessoal.
Estou desenvolvendo uma aplicação web no hibernate e fiquei com algumas dúvidas.
Estou usando um factory para buscar a sessão de dados, porém:
Ao entrar no sistema pelo navegador, e alterar um objeto da sessão sem persistir ele (comitar a sessão), se eu abrir outro navegador com outro usuário os dados já aparecem alterados para o outro usuário.
Eu imagino que o factory da sessão esteja retornando a mesma sessão sempre.
Pergunta: Como resolver isto? Qual melhor maneira?
Abaixo arquivo de config do hibernate:
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost/erp</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">123</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
<property name="hibernate.query.substitutions">true=1, false=0</property>
...
</session-factory>
</hibernate-configuration>
Abaixo a classe que retorna a sessão:
public class HibernateUtil {
private static SessionFactory factory;
private static AnnotationConfiguration cfg;
private static Session session;
static {
cfg = new AnnotationConfiguration();
cfg.configure();
factory = cfg.buildSessionFactory();
}
public static Session getSession() {
if (session == null) {
session = factory.openSession();
}
return session;
}
public static SessionFactory getSessionFactory() {
return factory;
}
}
Obrigado des de já!
