+6

ORM no PHP5 utilizando o SQLReactor

criado por Rafael Marques Martins em 16/02/2009 8:56am
Uma ferramenta de ORM (Object-Relational Mapping, ou Mapeamento Objeto-Relacional) é uma interface que implementa todos os métodos de acesso ao banco de dados, busca e alteraçao de registros, traduzindo-os para o conceito de Objetos.

Na prática, não mais se utiliza código SQL para inserir/alterar/excluir ou buscar registro no banco. O sistema passa a ser pensado como Orientado a objetos, possuindo alguns objetos persistentes. O banco de dados passa a ser apenas o repositório de objetos.

Desta forma, o programador, não mais se importa com o banco em si (apenas na hora de fazer o mapeamento), e depois passa a apenas utilizar métodos de busca dos objetos desejados, utilizando os métodos da ferramenta de ORM.

Portanto, utilizar uma ferramenta de ORM, consiste basicamente em:
- Mapeamento/Criação do banco de dados
- Utilizar os métodos de busca e manipulação de objetos

Algumas vantagens em utilizar ORM:
- Sistema completamente orientado a objetos
- Maior organização e facilidade de documentação do sistema
- Facilidade de manutenção de código
- Independência do código em relação ao DBMS em uso (o código é o mesmo pra qualquer banco de dados)
- Encaixa-se na camada Model do modelo MVC, facilitando o desenvolvimento de sistemas neste padrão

Comentários:

Mostrando 1 - 5 de 5 comentários
Thaís disse:
Raaaafa,

O SQLReactor é genial. Amei o artigo :D
02/07/2009 6:13am (~7 anos atrás)

Pra quem interessar, também existe um grupo para discussão de dúvidas sobre o projeto.

http://groups.google.com.br/group/sqlreactor-brasil

Abraços
29/05/2009 2:57pm (~7 anos atrás)

Marcos,

Você está completamente correto ao dizer da quantidade de recusos. Como eu mesmo disse no artigo, é um projeto bem novo (versao 0.3) e precisa mesmo de muitas coisas ainda. Conheci o Doctrine recentemente e concordo com você que ele vale muito a pena.

Porém, discordo quanto ao propel. O mapeamento de objetos não é tão simples e, mesmo o SQLReactor sendo novo, ja faz, de forma simples, coisas chatas de se fazer no propel, por exemplo. (Como fazer eagerload de múltiplos níveis)

Se você conhecer python, vai notar que a forma de mapeamento do SQLReactor se basea na forma do SQLObject, que é muito simples... Já a forma de busca e acesso aos dados, assemelha-se ao SQLAlchemy, que é considerado um dos mais completos pra python.

O reactor nasceu pra ser diferente dos outros ORMs em PHP. Eu o considero mais prático. Mas cada um prefere o seu. O objetivo do artigo é divulgar mais uma ferramenta de ORM e mostrar como funciona.

Fica por conta de cada desenvolvedor a escolha do seu.

Abraços,
Rafael
23/05/2009 5:39pm (~7 anos atrás)

Marcos Regis disse:
O artigo é realmente válido. Usar ORM tende a se tornar padrão em qualquer priojeto e em qualquer linguagem.
Quanto ao SQLReactor só o que tenho a dizer é que ele está muito longe das funcionalidades de outros ORMs mais maduros como o Propel <http://propel.phpdb.org/trac/> e o Doctrine <http://www.doctrine-project.org/>. Esses sim valem muito a pena.
Eu mesmo construi um ORM que ainda uso em alguns projetos mais antigos. Dieferente desses mencionados que utilizam o Pattern Active Record <http://pt.wikipedia.org/wiki/Active_record> eu usei o Pattern DAO <http://java.sun.com/blueprints/corej2eepatterns/Patterns/DataAccessObject.html>.
Outro ponto é a classe de abstração. Eu já utilizava PDO no meu ORM desde o início (quando foi lançado junto com a versão 5 do PHP) e agora todos tendem a migrar para ele assim como fez o Propel que utilizava Creole.
Alias o modelo de ORM que acho interessante e que inclusive "copie" diversas idéias é o JPA do Java.
23/05/2009 4:33pm (~7 anos atrás)

Fala ae Rapaz....
Parabens pelo artigo, ficou muito bom....

abraço
fui
22/05/2009 12:45pm (~7 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)