Vous êtes sur la page 1sur 3

Conceptos bsicos de ORM (Object Relational Mapping) Para todos aquellos que no conozcan el significado de las siglas ORM

(Object Rel ational Mapping), diremos que es una tcnica de programacin para convertir datos en tre el lenguaje de programacin orientado a objetos utilizado y el sistema de base de datos relacional utilizado en el desarrollo de nuestra aplicacin. Actualmente, las bases de datos relacionales solo pueden guardar datos primitivo s, por lo que no podemos guardar objetos que vayamos creando en nuestra aplicacin , sino que lo que hacemos es convertir los datos del objeto en datos primitivos que si podremos almacenar en las tablas correspondientes de nuestras bases de da tos. Si luego necesitamos ese objeto en alguna parte de nuestra aplicacin, debemo s de recuperar los datos primitivos de la base de datos y volver a construir el objeto. El mapeo objeto-relacional lo que nos ayudar ser precisamente a eso, a olvidarnos completamente de como convertir los objetos en datos primitivos para almacenarl os y viceversa. El utilizar el ORM, nos puede proporcionar cierta ventajas, pero como todo en es ta vida, tambin nos proporcionar una serie de desventajas que iremos viendo a cont inuacin. Ventajas Rapidez en el desarrollo. La mayora de las herramientas actuales permiten la creacin del modelo por medio del esquema de la base de datos, leyendo el esquema, nos crea el modelo adecuado. Abstraccin de la base de datos. Al utilizar un sistema ORM, lo que conseguido s es separarnos totalmente del sistema de Base de datos que utilicemos, y as si e n un futuro debemos de cambiar de motor de bases de datos, tendremos la segurida d de que este cambio no nos afectar a nuestro sistema, siendo el cambio mas senci llo. Reutilizacin. Nos permite utilizar los mtodos de un objeto de datos desde dist intas zonas de la aplicacin, incluso desde aplicaciones distintas. Seguridad. Los ORM suelen implementar sistemas para evitar tipos de ataques como pueden ser los SQL injections. Mantenimiento del cdigo. Nos facilita el mantenimiento del cdigo debido a la c orrecta ordenacin de la capa de datos, haciendo que el mantenimiento del cdigo sea mucho mas sencillo. Lenguaje propio para realizar las consultas. Estos sistemas de mapeo traen s u propio lenguaje para hacer las consultas, lo que hace que los usuarios dejen d e utilizar la sentencias SQL para que pasen a utilizar el lenguaje propio de cad a herramienta. Desventajas Tiempo utilizado en el aprendizaje. Este tipo de herramientas suelen ser com plejas por lo que su correcta utilizacin lleva un tiempo que hay que emplear en v er el funcionamiento correcto y ver todo el partido que se le puede sacar. Aplicaciones algo mas lentas. Esto es debido a que todas las consultas que s e hagan sobre la base de datos, el sistema primero deber de transformarlas al len guaje propio de la herramienta, luego leer los registros y por ltimo crear los ob jetos.

En la actualidad hay muchos tipos de framework que nos devuelven el mapeo objeto -relacional, segn el lenguaje que estemos utilizando. Vamos a nombrar algunos de los mas utilizados. Doctrine Es un framework ORM para PHP 5.2 y posterior, y entre sus puntos fuertes destaca su lenguaje DQL (Doctrine Query Language) que est inspirado en el HQL de Hiberna te. Para crear el modelo, Doctrine nos da dos alternativa, hacer una clase por tabla e indicarle mediante PHP el tipo de datos que almacenaremos. // models/generated/BaseUser.php class User extends BaseUser { public function setTableDefinition() { $this->hasColumn(\'username\', \'string\', 255, array(\'default\' => \'default u sername\')); $this->hasColumn(\'name\', \'string\', 255, array(\'default\' => \'default name\ ')); $this->hasColumn(\'age\', \'integer\', 4, array(\'unsigned\' => true)); // ... } // ... } O bien utilizar un esquema en formato YAML (similar a XML, pero mas legible para las personas) # schema.yml # ... User: # ... columns: username: type: string(255) default: default username name: type: string(255) default: default name age: type: integer(4) unsigned: true # ... Propel Es otro framework ORM para PHP 5 y superior y que est arropado por el framework S ynfony. Podemos acceder y modificar los datos de la base de datos utilizando la lgica de programacin orientada a objetos, en vez de utilizar los clsicos Select y Updates de SQL. Por ejemplo, si queremos recuperar un libro de una base de datos para cambiar su ttulo, lo podramos hacer de la siguiente forma:

$book = BookPeer::retrieveByPK(5); $book->setTitle( The Propel Story ); $book->save(); Antes de utilizar Propel, deberemos de crear un archivo llamado schema.xml con l a estructura de la base de datos, pero si ya la tenemos creada, Propel lo puede crear automticamente. Hibernate Es una herrmienta ORM para la tecnologa JAVA y disponible tambin para la tecnologa .NET con el nombre de Nhibernate. Es software libre bajo la licencia GNU LGPL. P ueden ver mas informacin aqu. LINQ Es un ORM desarrollado por Microsoft para el mapeo objeto-relacional para los le nguajes Visual Basic. Net y C#. Incluye una herramienta llamada SQLMetal que per mite la generacin automtica de clases directamente desde una base de datos MS-SQL. Adems de estos que hemos nombrado hay otros muchos como pueden ser QuickDB, iPers ist, Java Data Objects, .

Vous aimerez peut-être aussi