Boa tarde.
Gostaria da opinião de vocês se existe(e qual) o problema de eu criar uma Classe que terá uma Session(do hibernate) static(para ter apenas um objeto na memoria) aberta, e em todas as minhas operações em uma classe Dao utilizar essa Session sem finalizar a mesma. Da seguinte maneira:
public class ConnectionFactory{
private static SessionFactory factory = null;
private static Session session = null;
public static void cfgConexao() {
try {
AnnotationConfiguration configuration = new AnnotationConfiguration();
configuration.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect");
configuration.setProperty("hibernate.connection.driver_class", "com.mysql.jdbc.Driver");
configuration.setProperty("hibernate.connection.url", "jdbc:mysql://localhost/cm_homologacao");
configuration.setProperty("hibernate.connection.username", "root");
configuration.setProperty("hibernate.connection.password", "151810");
configuration.setProperty("hibernate.show_sql", "true");
configuration.setProperty("hibernate.hbm2ddl.auto", "true");
factory = configuration.buildSessionFactory();
} catch (Throwable ex) {
throw new ExceptionInInitializerError(ex);
}
}
public static Session getSession(){
cfgConexao();
if(session == null){
session = factory.openSession();
return session;
}else{
return session;
}
}
E no Dao algo do tipo:
public class DaoHibernate {
public void save(Object object) throws ConnectionException {
try{
Session session = ConnectionFactory.getSession();
session.saveOrUpdate(object);
session.getTransaction().commit();
}catch(Exception e){
System.out.println("Erro ao tentar Salvar");
e.printStackTrace();
}
}
O ambiente é um Sistema Web, rodando com Tomcat.
Muito obrigado.