Ah lembrando, como vc tá aprendendo Java, DAO é um pattern.

http://java.sun.com/blueprints/corej2eepatterns/Patterns/DataAccessObject.html

2008/1/16 Marcus Cavalcanti <[EMAIL PROTECTED]>:

> o nome é DAO .. no DAO vc usa suas entidades (model)
>
> 2008/1/13 Paulo Balzi <[EMAIL PROTECTED]>:
>
> Marco, valeu pela explicação.
> > Como surgiu essa questão aqui na lista e aproveitando que estou fazendo
> > um curso de Java, perguntei sobre o MVC ao professor.
> > Entendi o seguinte, que no Model fica o negócio da sua aplicação,
> > independente de suar banco de dados ou não. Ele falou tbem, que muita gente
> > costuma representar o modelo relacional do banco orientado a objeto, como vc
> > fez, mas que não é necessáriamente fazer desse jeito.
> > E do jeito que fiz, com as classes de selects, outra pra inserir,
> > excluir, alterar, etc....eu nada mais, fiz uma camada de manipulação da base
> > (ele falou o nome que seria isso mas eu esqueci!), e que não seria o Model
> > da aplicação...hehe
> > Resumindo, ainda tenho muito q entender.
> > :o)
> >
> > 2008/1/11 Marco Telles <[EMAIL PROTECTED]>:
> >
> > Eu 'exprico' (ou tento...) :-)
> > >
> > > Com exemplo acho que fica melhor, ok ? Vou omitir os detalhes e
> > > colocar
> > > só os dados relevantes, se ficar confuso me fala.
> > >
> > > 1) Associação
> > > Considerando:
> > > a) tabela (classe) produto:
> > > id
> > > descricao
> > > fabricante
> > >
> > > b) tabela (classe) fabrica:
> > > id
> > > nome
> > >
> > > c) código php (para não misturar com o ci, já que o problema não é bem
> > > com o ci) ;-)
> > >
> > > $fabricante = new Fabrica;
> > > $fabricante->id = 777;
> > > $fabricante->nome = 'Tabajara';
> > >
> > > $produto = new Produto;
> > > $produto->id = 1;
> > > $produto->descricao = 'Assento Sanitário Ejetável';
> > > $produto->fabricante = $fabricante;
> > >
> > > echo 'Produto: ' . $produto->descricao;                          >>>
> > > Assento Sanitário Ejetável
> > > echo 'Fabricante: ' . $produto->fabricante->nome;          >>>
> > > Tabajara
> > >
> > > Fico devendo a Agregação e Composição... :-)
> > >
> > > Abs
> > >
> > > Muita sorte para nós!
> > >
> > > Marco Telles
> > >
> > > #############
> > > # Pier de Ipanema ( http://www.pierdeipanema.com.br/ )
> > > # X-Trad Traduções BR ( http://www.x-trad.org/ )
> > > # CodeIgniter PHP framework ( http://www.codeigniter.com.br/ )
> > > # Ubuntu The power of free software ( http://www.ubuntu-br.org/ )
> > > # Python Programming Language ( http://www.pythonbrasil.com.br/ )
> > >
> > >
> > >
> > > Paulo Balzi escreveu:
> > > > Marco, achei bem legal esse seu exemplo, clareou mais um pouco as
> > > > idéias...
> > > >
> > > > mas não entendi direito a parte da associação, não consegui
> > > visualizar
> > > > direito como seria isso na hora de fazer uma consulta envolvendo
> > > mais
> > > > de uma tabela.
> > > >
> > > > valeu
> > > >
> > > > 2008/1/11 Marco Telles <[EMAIL PROTECTED]
> > > > <mailto: [EMAIL PROTECTED]>>:
> > > >
> > > >     E eu aproveito também para ver se entendi direito o model ;-)
> > > >
> > > >     Errado não está, mas considerando oop, onde cada classe carrega
> > > >     seus atributos e métodos próprios, esse esquema foge ao padrão e
> > > >     cria problemas futuros, apesar de funcionar...
> > > >
> > > >     Estou com o que disse o Edinho. Além do CI só conheço o Zend e
> > > ele
> > > >     associa também um model bastando declarar na classe um atributo
> > > >     protected com o nome da tabela.
> > > >
> > > >     Cada model deve conter uma única tabela (repito, considerando
> > > oop
> > > >     já que mvc estou engatinhando, então posso estar enganado), seus
> > >
> > > >     atributos e métodos específicos (que vão incluir as validações,
> > > >     etc... como já discutido aqui).
> > > >
> > > >     No caso se tenho uma tabela produto com produtoId, produtoNome,
> > > >     produtoMarcaId e outra tabela marca com marcaId e marcaNome,
> > > então
> > > >     ficaria:
> > > >
> > > >     Model prodmodel.php:
> > > >
> > > >     Class Prodmodel
> > > >     {
> > > >         private $produtoId;
> > > >         private $produtoNome;
> > > >         private $produtoMarca;
> > > >         const   Tab = 'produto';
> > > >
> > > >         function __construct() {
> > > >             // Chama o construtor do Model
> > > >             parent::Model();
> > > >            $this->load->model('Marcamodel'); // ou pode chamar
> > > também
> > > >     no método, caso apenas um método utilize a tabela para
> > > associação ?
> > > >         }
> > > >
> > > >         function selProdAll() {
> > > >             // seleciona todos produtos e retorna um objeto
> > > >             $query = $this->db->get(self::Tab);
> > > >             return $query->result();
> > > >         }
> > > >
> > > >         function assProdMarca( $id ) {
> > > >            // faz a associação da tabela marca e produto - o model
> > > >     marca poderia ser chamado aqui. ?
> > > >            $this->produtoMarca = $this->Marcamodel->get( $id );
> > > >         }
> > > >
> > > >     (...)
> > > >     }
> > > >
> > > >     Na classe Marca, é a mesma coisa, com seus respectivos atributos
> > > e
> > > >     métodos..
> > > >
> > > >     Isso é o que entendi do model
> > > >
> > > >     Abs
> > > >
> > > >     Marco
> > > >
> > > >     Paulo Balzi escreveu:
> > > >>     vou aproveitar a deixa pra ver se estou fazendo certo. :o)
> > > >>
> > > >>     Na minha aplicação eu criei o seguinte:
> > > >>      - um model para fazer selects no banco: nesse model existem
> > > >>     vários tipos de selects, variando a qtd de paramentros, o tipo
> > > do
> > > >>     retorno, etc
> > > >>     - um model pra trabalhar com metadados da tabela: aqui criei
> > > >>     métodos q busca a chave primária da tabela, outra q retorna os
> > > >>     campos da tabela, etc...
> > > >>     - um terceiro model para fazer o CRUD (insert, delete, alter)
> > > nas
> > > >>     tabelas
> > > >>
> > > >>     Nos meus controlers, eu simplesmente vou chamando o que eu
> > > >>     preciso, um select,  um insert, etc...
> > > >>
> > > >>     acredito que 100% correto não está, mas está muito errado??
> > > >>
> > > >>     valeu
> > > >>
> > > >>     2008/1/11 Edinho Almeida < [EMAIL PROTECTED]
> > > >>     <mailto:[EMAIL PROTECTED]>>:
> > > >>
> > > >>         O CodeIgniter me parece ser o único que não associa por
> > > >>         padrão um Model a uma Tabela.
> > > >>
> > > >>         Em Cakephp ou Rails você cria
> > > >>         um Model chamado Produto e ele já se relaciona com a tabela
> > > Produtos.
> > > >>         Isso é interessante porque nestes frameworks já ganhamos
> > > >>         alguns metodos no model sem digitar nada no model em si:
> > > >>         Poderia fazer por exemplo:
> > > >>
> > > >>         No model:
> > > >>
> > > >>         class Produto extends Model {
> > > >>           function Produto()
> > > >>           {
> > > >>             parent::Model();
> > > >>           }
> > > >>         }
> > > >>
> > > >>         No controller:
> > > >>         $this->load->model('Produto');
> > > >>         $result = $this->produto->findById('122'); //encontrará a
> > > >>         linha no banco usando where id='122'
> > > >>         ou
> > > >>         $result = $this->produto->findByName('Camiseta branca');
> > > >>         //encontrará a linha no banco usando where name='Camiseta
> > > >>         branca'
> > > >>
> > > >>         ATENÇÃO: O CÓDIGO ACIMA NÃO EXISTIRÁ NO CODEIGNITER - É UM
> > > >>         EXEMPLO
> > > >>
> > > >>         Para termos isso no codeigniter teríamos que criar estes
> > > >>         metodos na unha:
> > > >>         class Produto extends Model {
> > > >>           function Produto()
> > > >>           {
> > > >>             parent::Model();
> > > >>           }
> > > >>           function _findByAlgo($algo,$valor){
> > > >>             $this->db->where( $algo, $valor);
> > > >>             $query = $this->db->get('Produtos');
> > > >>             return $query->result();
> > > >>           }
> > > >>           function findById($id){
> > > >>             return $this->_findByAlgo('id',$id);
> > > >>           }
> > > >>           function findByName($id){
> > > >>             return $this->_findByAlgo('name',$id);
> > > >>           }
> > > >>         }
> > > >>
> > > >>         Num projeto que desenvolvi que haviam várias páginas de
> > > >>         formulários eu tinha um controller e um model para cada
> > > página.
> > > >>         EX: página DADOS DO PROPONENTE
> > > >>         no controller eu tinha:
> > > >>         $this->load->model('Dados_do_proponente');
> > > >>         E no Model Dados_do_proponente eu alterava dados nas
> > > tabelas:
> > > >>         proponentes //que continha uma coluna para dizer se era
> > > >>         pessoa fisica ou juridica
> > > >>         proponentes_pf
> > > >>         proponentes_pj
> > > >>         proponentes_areasdeatuacao // tabela N:N com a tabela
> > > >>         areasdeatuacao
> > > >>
> > > >>         Ou seja em vez de chamar vários Models eu chamava um único
> > > >>         model e e este fazia a ponte com várias tabelas.
> > > >>         No caso do Cakephp e Rails eu estaria saindo do padrão para
> > > >>         fazer isso.
> > > >>         Mas no caso do codeigniter ele já parte do principio de
> > > você
> > > >>         ter somente o metodos que utilizará. Vide exemplo do model
> > > na
> > > >>         documentação que contém os metodos get_last_ten_entries(),
> > > >>         insert_entry() e update_entry();
> > > >>
> > > >>         Abs
> > > >>         Edinho Almeida
> > > >>
> > > >>
> > > >>
> > > >>         On 1/10/08, *Marco Telles* < [EMAIL PROTECTED]
> > > >>         <mailto:[EMAIL PROTECTED]>> wrote:
> > > >>
> > > >>             Pelo que entendi, para cada tabela corresponde um
> > > model,
> > > >>             é isso ?
> > > >>             E para chamar tem que ser um a um ?
> > > >>             Exemplo:
> > > >>             $this->load->model('Produtomod');
> > > >>             $this->load->model('Linhamod');
> > > >>             (...)
> > > >>
> > > >>             Buscando no guia, ví que o segundo parâmetro é para
> > > >>             usarmos outro nome,
> > > >>             mas não vi nada para carregar vários models...
> > > >>
> > > >>             Abs
> > > >>
> > > >>             --
> > > >>             Muita sorte para nós!
> > > >>
> > > >>             Marco Telles
> > > >>
> > > >>             #############
> > > >>             # Pier de Ipanema ( http://www.pierdeipanema.com.br/ )
> > > >>             # CodeIgniter PHP framework (
> > > >>             http://www.codeigniter.com.br/ )
> > > >>             # Ubuntu The power of free software (
> > > >>             http://www.ubuntu-br.org/ )
> > > >>             # Python Programming Language (
> > > >>             http://www.pythonbrasil.com.br/ )
> > > >>
> > > >>
> > > >>             _______________________________________________
> > > >>             Lista mailing list
> > > >>             [email protected] <mailto:
> > > [email protected]>
> > > >>
> > > http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
> > > >>             
> > > >> <http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
> > > >
> > > >>
> > > >>
> > > >>
> > > >>         _______________________________________________
> > > >>         Lista mailing list
> > > >>         [email protected] <mailto:[email protected]>
> > > >>
> > > http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
> > > >>
> > > >>
> > > >>
> > > >>
> > > >>     --
> > > >>     Paulo Balzi
> > > >>
> > > ------------------------------------------------------------------------
> > > >>
> > > >>     _______________________________________________
> > > >>     Lista mailing list
> > > >>     [email protected] <mailto: [email protected]>
> > > >>     http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
> > >
> > > >
> > > >     _______________________________________________
> > > >     Lista mailing list
> > > >     [email protected] <mailto: [email protected]>
> > > >     http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
> > >
> > > >
> > > >
> > > >
> > > >
> > > > --
> > > > Paulo Balzi
> > > >
> > > ------------------------------------------------------------------------
> > > >
> > > > _______________________________________________
> > > > Lista mailing list
> > > > [email protected]
> > > > http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
> > > >
> > >
> > > _______________________________________________
> > > Lista mailing list
> > > [email protected]
> > > http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
> > >
> >
> >
> >
> > --
> > Paulo Balzi
> > _______________________________________________
> > Lista mailing list
> > [email protected]
> > http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
> >
> >
>
_______________________________________________
Lista mailing list
[email protected]
http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br

Responder a