Versão atual:

Ajuda em criação do DAO

Criei um DAO e gostaria de saber se esta abordagem é satisfatória para um sistema que a previsão é de uma quantidade elevada de acessos ou se eu terei algum tipo de problema.

Segue as classes envolvidas:

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Session;

import br.com.Health.connectionFactory.Hibernate.ConnectionFactoryImpHibernate;
import br.com.Health.connectionFactory.Hibernate.ConnectionFactoryInterfaceHibernate;

public class Teste implements ConnectionFactoryInterfaceHibernate{

    private static ConnectionFactoryImpHibernate con;
    private static List<Object> entidades;

    @Override
    public String returnCaminhoBanco() {
        String caminho = "C:\\dao\\";
        return caminho;
    }
    @Override
    public String returnNomeBanco() {
        String nome = "props.properties";
        return nome;
    }
    @Override
    public List<Object> returnEntidades() {
        entidades = new ArrayList<Object>();
        return entidades;
    }
    public Session getSession(){ 
        con = new ConnectionFactoryImpHibernate(this);
        return con.getSession();
    }
}

Abaixo a Classe que executa os comandos no Banco de Dados

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;

import br.com.Health.connectionFactory.Hibernate.ConnectionFactoryInterfaceHibernate;
import br.com.Health.exception.ConnectionException;

public class DaoHibernate {

    private Session session;
    public void save(ConnectionFactoryInterfaceHibernate connectionFactoryInterfaceHibernate, Object object) throws ConnectionException {
        conectar(connectionFactoryInterfaceHibernate);

        try{
            this.session.saveOrUpdate(object);
            this.session.getTransaction().commit();
        }catch(Exception e){
            System.out.println("Erro ao tentar Salvar");
            e.printStackTrace();
        }finally{
            desconectar();
        }
    }

    //MÉTODOS RESPONSÁVEIS POR SALVAR MAIS DE UM OBJETO AO MESMO TEMPO.
    //É NECESSÁRIO EXECUTAR O beginTransaction(Session session) PARA ABRIR A CONEXÃO E
    //DEPOIS EXECUTAR O commit() PARA CONFIRMAR A OPERAÇÃO.
    public void beginTransaction(ConnectionFactoryInterfaceHibernate connectionFactoryInterfaceHibernate) throws ConnectionException {
        conectar(connectionFactoryInterfaceHibernate);
    }
    public void saveWithTransaction(Object object) {
        try{
            this.session.saveOrUpdate(object);
        }catch(Exception e){
            e.printStackTrace();
            System.out.println(e);
        }
    }
    public void commit() {
        try{
            this.session.getTransaction().commit();

        }catch(Exception e){
            e.printStackTrace();
            System.out.println(e);

        }finally{
            desconectar();
        }
    }

    @SuppressWarnings("rawtypes")
    public List select(ConnectionFactoryInterfaceHibernate connectionFactoryInterfaceHibernate, String query, Object...params) throws ConnectionException{

        Query q = null;
        List<Object> listParam = new ArrayList<Object>();
        List lista = new ArrayList();
        String arg;

        for (Object object : params) {
            listParam.add(object);
        }
        conectar(connectionFactoryInterfaceHibernate);

        try{
            q = this.session.createQuery(query);

            if(listParam.size() == 0){

            }else{
                for (int i = 0; i < listParam.size(); i++) {
                    arg = (String) listParam.get(0);
                    q.setParameter(arg, listParam.get(1));

                    if(listParam.size() >= 2){
                        listParam.remove(0);
                        listParam.remove(0);                
                    }
                    if(listParam.size() == 1){
                        listParam.remove(0);
                    }
                }

            }

            lista = q.list();
        }catch(Exception e){
            e.printStackTrace();
            System.out.println(e);
        }finally{
            desconectar();
        }
        return lista;
    }

    public void delete(ConnectionFactoryInterfaceHibernate connectionFactoryInterfaceHibernate, Object obj) throws ConnectionException {
        conectar(connectionFactoryInterfaceHibernate);

        try{
            this.session.delete(obj);
            this.session.getTransaction().commit();
        }catch(Exception e){
            e.printStackTrace();
            System.out.println(e);
        }finally{
            System.out.println("Fechando Conexão...");
            desconectar();
            System.out.println("Conexão Fechada...");
        }

    }

    public void conectar(ConnectionFactoryInterfaceHibernate connectionFactoryInterfaceHibernate) throws ConnectionException {
        try{
            this.session = connectionFactoryInterfaceHibernate.getSession();
            this.session.beginTransaction();
        }catch(Exception e){
            if(session.isConnected()){
                session.close();
            }
            System.out.println("Erro ao tentar estabelecer a conexão");
            ConnectionException conExc = new ConnectionException();
            throw conExc; 
        }
    }

    public void desconectar() {
        if(session.isOpen()){
            session.disconnect();
            session.close();
        }
    }
}

Abaixo a Classe que criei para testar a conexão.

import java.util.List;

import org.hibernate.Session;

import br.com.Health.connectionFactory.Hibernate.ConnectionFactoryImpHibernate;
import br.com.Health.connectionFactory.Hibernate.ConnectionFactoryInterfaceHibernate;

public class Teste implements ConnectionFactoryInterfaceHibernate{

    private static ConnectionFactoryImpHibernate con;

    @Override
    public String returnCaminhoBanco() {
        String caminho = "C:\\dao\\";
        return caminho;
    }
    @Override
    public String returnNomeBanco() {
        String nome = "props.properties";
        return nome;
    }
    @Override
    public List<Object> returnEntidades() {
        // TODO Auto-generated method stub
        return null;
    }
    public Session getSession(){ 
        con = new ConnectionFactoryImpHibernate(this);
        return con.getSession();
    }
}

Versões(3):

Ver a versão formatada

Ajuda em criação do DAO

  • criado 16 de abr de 2015

Comentário

new question