Instanciar método do DAO no BEAN Gerenciado

11 respostas
L

Bom dia pessoal,

Voces poderiam me ensinar como instancio um método do DAO com argumento dentro do meu Bean gerenciado.  Veja os códigos:

[size=18]Esse é o meu bean gerenciado:[/size]

public class CadUsuarios {

    private String nomeUsuario;
    private String senha;
    private Integer idGrpAcc;   // <= esse é o código do grupo de acesso do usuário que deverá ser passado ao método DAO como argumento
            
    // Não sei como referenciar e/ou instanciar o método DAO
   // que é public List contextosGrupoAcesso(Integer idGrp) throws Exception                         
    private List<GrpAcessoCtxDAOImp> ?????;  

    // getters e setters

[size=18]Essa é minha classe DAO:[/size]

public class GrpAcessoCtxDAOImp implements GrpAcessoCtxDAO {

    private Connection conn;

    public GrpAcessoCtxDAOImp() throws Exception {
        try {
            this.conn = ConnectionFactory.getConnection();

        } catch (Exception e) {
            throw new Exception("Erro: " + ":\n" + e.getMessage());
        }
    }

    // ESSE É O MÉTODO QUE DESEJO INSTANCIAR NO MEU BEAN GERENCIADO, O ARGUMENTO É O GRUPO DO USUÁRIO
    public List contextosGrupoAcesso(Integer idGrp) throws Exception {

        PreparedStatement ps = null;
        Connection conn = null;
        ResultSet rs = null;

        try {
            conn = this.conn;
            String sql = "SELECT tbctx.stContexto, tbgrp_acesso.stNomeGrp,";
            sql += " tbgrp_acesso_ctx.ID_Grp_Acesso,tbgrp_acesso_ctx.ID_Ctx";
            sql += " tbgrp_acesso.blAcessoTotal  FROM tbgrp_acesso_ctx";
            sql += " INNER JOIN tbctx ON tbgrp_acesso_ctx.ID_Ctx = tbctx.ID_Ctx, tbgrp_acesso";
            sql += " WHERE tbgrp_acesso_ctx.ID_Grp_Acesso = tbgrp_acesso.ID_Grp_Acesso";
            sql += " AND tbgrp_acesso_ctx.ID_Grp_Acesso = ?";
            ps = conn.prepareStatement(sql);
            ps.setInt(1, idGrp);
            rs = ps.executeQuery();
            List<GrpAcessoCtx> list = new ArrayList<GrpAcessoCtx>();
            while (rs.next()) {
                String stContexto = rs.getString(1);
                String stNomeGrp = rs.getString(2);
                Integer ID_Grp_Acesso = rs.getInt(3);
                Integer ID_Ctx = rs.getInt(4);
                list.add(new GrpAcessoCtx(ID_Grp_Acesso, ID_Ctx,stNomeGrp,stContexto));
            }

            return list;

        } catch (SQLException sqle) {
            throw new Exception(sqle);

        } finally {
            ConnectionFactory.closeConnection(conn, ps, rs);
        }
    }

}

11 Respostas

filipenf

Só uma correção. Você não instancia um método, apenas uma classe. O seu código tem que ficar assim:

private List<GrpAcessoCtx> = new GrpAcessoCtxDAOImp().list(idGrpAcc);

e a assinatura método list deve ser alterada para:

public List<GrpAcessoCtx> contextosGrupoAcesso(Integer idGrp) throws Exception {
L

Bom dia Felipe,

Obrigado pela força.

Desculpe pelo "instanciar método", é que sou iniciante em java.

Me diga uma coisa, como fica o método getter e setter  da propriedade :
private List<GrpAcessoCtx> = new GrpAcessoCtxDAOImp().list(idGrpAcc);
É que a outra dúvida minha é que que momento eu passaria o argumento [idGrpAcc] para o método LIST

Abraços

L

Boa noite Felipe,

Fiz tudo o que vc me pediu, mas tá dando um erro no Bean onde foi criado a propriedade :

private List<GrpAcessoCtx> = new GrpAcessoCtxDAOImp().list(idGrpAcc);
O java tá solicitando que se crie o método
public List<GrpAcessoCtx> list(Integer idGrpAcc)
na classe DAO
GrpAcessoCtxDAOImp
.

O que devo fazer ??

Abraços

filipenf

Olha só… o nome do método que você está utilizando é contextosGrupoAcesso(…), você deve chamar este método. Eu me enganei qdo coloquei list().

private List<GrpAcessoCtx> = new GrpAcessoCtxDAOImp().contextosGrupoAcesso(idGrpAcc);

Em relação ao outro post, você deve executar esse código qdo a variável idGrpAcc tiver um valor. Isso vai depender da lógica da aplicação. Você pode ter um botão ‘Filtrar’ e no corpo do método de filtragem executar isso. Mas como falei, depende da lógica.

L

Bom dia Filipe,

Valeu demais Filipe, muito obrigado mesmo por ter paciência em me atender.

Agora tá dando o seguinte erro na classe
public class CadUsuarios{
:

Erro:

expected
Unreported exception java.lang.Exception; must be caught or declared to be throws

O que devo fazer neste caso para corrigir a logica ?

[]s

filipenf

o erro não está na classe, mas em algum método ou construtor dela, vc precisa encontrar qual o método que chama algum código que pode disparar uma exceção e colocar um try…catch ou um throws

L

Oi Filipe, desculpe por estar te tomando tanto tempo assim.

A classe que dispara uma excessão é a classe
public List contextosGrupoAcesso(Integer idGrp) throws Exception {
, pois é ela, segundo sua orientação, é quem estamos instanciando no Bean Gerenciado CadUsuarios.

Mas ela não possui nenhum erro, pelo menos não enxerguei aqui. Veja ela logo acima aqui neste post.

[]s

marcelo_mococa

Link,

O problema é que na declaração do seu método, você informou que ele pode lançar Exception (throws Exception).

Neste caso, quem invocar este método deve tratar ou delegar o tratamento desta exceção. Aconselho você ler um pouco sobre tratamento de exceções no Java. O Luca escreveu 3 excelentes artigos sobre isso.

http://www.guj.com.br/posts/list/61611.java

Uma dica. Procure entender o que você está fazendo, não fique apenas copiando e colando soluções em seu código.

L

Marcelo,

Obrigado pela dica.

    Quanto a copiar e colar no meu código, não é isso que acontece. Por ser iniciante e por estar vindo de um mundo Microsoft, eu leio e tento entender como o Java funciona. Infelizmente pra mim, o java é uma linguagem cuja a curva de aprendizado demande um tempo maior para absorver seus conceitos e especificações.

      Posso te garantir que não estou só copiando e colocando como você afirma, até porque, tenho respeito pelos colegas que aqui tentam ajudar desenvolvedores inexperientes como eu nessa linguagem e, abdicando de tempo precioso já que com certeza a maioria dos profissionais que fazem parte desse grupo tem muitas obrigações no dia a dia.

      Quem se dispõe a ajudar os outros, é porque tem humildade, amor no coração e força de vontade, portanto, agradeço antecipadamente aos colegas que se encaixam nesse perfil e principalmente ao Filipe que se dispos a me ajudar desde o inicio da postagem.

       Marcelo, talvez você seja um profissional competente, super experiente e não necessite de ajuda de ninguém, mas eu necessito.

[]s

marcelo_mococa

Link,

Desculpe pelo que escrevi, mas acho que você não me entendeu direito. Mas enfim, não quero prolongar esta discussão.

Caso você precise de mais alguma ajuda estou a disposição.

L

Ok Marcelo.

Bom trabalho pra ti.  Agradeço pelo convite de ajuda e com certeza vou precisar...rsrs.

Forte abraço

Criado 23 de junho de 2009
Ultima resposta 24 de jun. de 2009
Respostas 11
Participantes 3