public List<Sessao> Buscar(Sessao filtro) {
        try {
            String sql = "select * from Sessao ";
            String where = "";

            if (filtro.getDataInicio() != null) {
                where = " dataInicio > " + filtro.getDataInicio();
            }

            if (filtro.getDataTermino() != null) {
                if (where.length() > 0) {
                    where = where + " and ";
                }
                where = " dataTermino < " + filtro.getDataTermino();
            }

            if (filtro.getCodigo() > 0) {
                if (where.length() > 0) {
                    where = where + " and ";
                }
                where = where + " IdSessao = " + filtro.getCodigo();
            }

            if (where.length() > 0) {
                sql = sql + " where " + where;
            }

            Statement comando = getConexao().createStatement();
            ResultSet resultado = comando.executeQuery(sql);

            List<Sessao> lista = new ArrayList<Sessao>();

            while (resultado.next()) {
                Sessao obj = new Sessao();
                UsuarioDAO user = new UsuarioDAO();
                CaixaDAO caixa = new CaixaDAO();

                CarregaObjetoSessao(obj, resultado, user, caixa);
                lista.add(obj);
            }
            return lista;
        } catch (Exception ex) {
            System.err.println(ex.getMessage());
            return null;
        }
    }