1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Problema ao deixa conexão aberta - Hibernate

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.

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags java-ee hibernate session mysql ou faça a sua própria pergunta.