[Php] ¿Que es un ORM?

Pues como has visto en los últimos artículos de este blog he hablado mucho del famosísimo ORM que si bien aun me falta mucho, para poder usar todas sus características, lo poco que he aprendido a usarlo me ha resultado maravilloso.

El mapeo objeto-relacional u ORM (Object-Relational Mapping), una técnica de programación para convertir datos entre el sistema de tipos utilizado en un lenguaje de programación orientado a objetos y el utilizado en una base de datos relacional. En la práctica esto crea una base de datos orientada a objetos virtual, sobre la base de datos relacional. Wikipedia

Ose nos permite “pasar” una base de datos a programación orientada objetos, es decir tu solo te encargas de configurar tu conexión y mediante métodos puedes hacer los querys que quieras, y todo son objetos.

Existen muchos ORMS, para diferentes lenguajes de programación, pero obviamente nos enfocaremos a Php, y según se (no estoy 100% seguro) pero los ORMS están basados en Hibérnate de Java se supone que fue como el primer ORM.

En Php tenemos los siguientes ORMS:

  • Doctrine
  • Propel
  • Kohana ORM
  • Bender-modeler (Este es de un amigo, aunque este es muy completo y va mas allá)
  • Junction PHP
  • PHP Object Generator
  • ADOdb Active Record
  • EZPDO
  • DB_DataObject
  • Entre otras

Yo no he visto como trabajan cada una y se dé muy buenas fuentes que las mejores estan entre Doctrine y Propel.

Claro que depende de que desees hacer, de hecho aun no he probado bender-modeler pero por lo que veo es muy completa :-) (Y no es comercial he) ya que como dije va mas allá ya que te genera los modelos que usaras en tu bd automáticamente (incluidos getters y setter).

Voy a mostrar a que me refiero con todo esto del ORM desde la vista de Kohana ORM ya que es donde he trabajado y es muy fácil.

Antes que nada quiero aclarar que son solo ejemplos, prometo que después de esto seguirá nuestra primer MVC con base datos, ORMS y todo, esto solo es para que se den una idea de que hablo cuando digo que esta buenos los ORM´s.

Para empezar solo necesitamos crear nuestra tabla (p.ejem. ‘usuarios’), y crear un modelo con la siguiente sintaxis.

usuarios.php

1<?php
2
3class Model_Usuarios extends ORM {
4
5}
6
7?>


Lo único que debemos de cambiar es Model_Usuarios donde Usuarios es el nombre de nuestra tabla y listo.

Y ahora veremos la diferencia

1<?php
2
3//Anterior
4$resultado = mysql_query("select * from usuarios",$conecct);
5
6//en ORM
7$resultado = ORM::factory('usuarios')->find_all();
8
9?>

Y además el resultado es un objeto no un array, aunque si deseamos usar array agregamos as_array() y listo y por ejemplo si necesitamos ver los usuarios que tuvieron 10 accesos sería algo así.

01<?php
02
03//Esta es una forma
04 $resultado = ORM::factory('usuarios')->where('accesos','=',10)->find_all();
05
06 //También se puede separar el código para que se a mas fácil leer
07 $resultado = ORM::factory('usuarios')
08 ->where('accesos','=',10)
09 ->find_all();
10?>

Como puedes ver es muy fácil de usar, y usa el patrón de diseño Factory para acceder a los modelos(tablas), y luego le agregas os métodos, where, orderby, limit, etc.

Claro y pensaras ¿y el modelo solo ese es su contenido, un par de líneas? claro que no, pero ese es más avanzado, podemos hacer joins y demás, pero vayamos por partes, en la siguiente entrega veremos un ejemplo real de una aplicación web en kohana con MVC y una base de datos.

Related Photos

No related photos.

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *