Patron active record

Solo disponible en BuenasTareas
  • Páginas : 18 (4270 palabras )
  • Descarga(s) : 0
  • Publicado : 3 de diciembre de 2011
Leer documento completo
Vista previa del texto
ActiveRecord
Traducido al español por Rodolinux: http://www.rodolinux.com.ar Correcciones y Arreglos Estéticos por Pablo Luis Martinez – Sgo del Estero

Es una implementación de un patrón de diseño ‘Active Record’, el cual es un mecanismo de Mapeo Objeto-Relacional (Object Relational Mapping - ORM). ActiveRecord es una de esas implementaciones de este patrón de diseño que nos ayuda a realizartodas las tareas de nuestras bases de datos (Definición de Datos y Manipulación de Datos a través de sus capacidades de metaprogramación) sin tener que escribir una sentencia SQL. AR representa a las tablas de las base de datos a través de clases e instancias. Una clase que trabaja en relación a una tabla de base de datos es llamada “modelo”, las instancias de estas clases son “instancias demodelo”. Los modelos encapsulan la lógica de negocios. Algunos ejemplos más de implementaciones ORM son ‘Hibernate’ para Java y ‘Castle’ en .Net. AR es una librería incorporada a Rails, la cual puede ser utilizada con otros frameworks también. Pero ahora la utilizaremos para Rails. A modo informativo, el código de AR es la parte más grande del código total de Rails. AR soporta la mayoría de lasbases de datos tales como Oracle, SqlServer, db2, Postgresql, Sybase, etc. Que sucede debajo de AR: 1. Genera el SQL 2. El SQL es pasado al RDBMS (Relational Database Management System Sistema de Gestión de Base de Datos Relacional ) subyacente. 3. El RDBMS compila este SQL 4. Entonces lo ejecuta. 5. Devuelve un enumerable (objeto como array) 6. Crea un objeto modelo AR para cada fila.

Como unopuede ver, el proceso entero de ejecución del SQL podría ser mas lento comparado con la ejecución de un ‘procedimiento almacenado’ en la base de datos (el cual es un código precompilado). Uno siempre puede preguntarse, ¿Podemos correr un “procedimiento almacenado” desde AR directamente?, Sí, podemos. Pero como los procedimientos almacenados son específicos a la base de datos, esto puede volverseuna limitación.
1 de 23

Podemos (y frecuentemente necesitamos) correr SQL directamente de AR para acelerar el proceso, pero entonces un debe aprender a escribir buenas consultas SQL e implementar ANSI SQL también para hacer a nuestras aplicaciones independientes del RDBMS. Antes que nos sumerjamos en el aprendizaje de AR, prestemos atención a los siguientes puntos: 1. AR es capa de Modelos, esdecir, una interface que nos ayuda a manejar nuestra base de datos. Todas las operaciones CRUD (Create, Read, Update, Delete) pueden ser ejecutadas a través de AR. La base de datos relacional puede ser usada con propósitos de almacenaje de datos. 2. El código que escribimos aquí consistiría en su mayoría de la lógica de negocios. Obviamente esto es mucho más reutilizable a través de lasaplicaciones. 3. Mientras trabajamos en cualquier aplicación, uno debería analizar, cuanto necesita ser independiente de la base de datos, cuando utilizar el poder de la flexibilidad, cuando necesitar la velocidad de ejecución y cuando balancear esto. 4. La clase ActiveRecord::Migration se usa para fines de Definición de Datos y ActiveRecord::Base se usa para fines de Manipulación de Datos. Se cubriránlos siguientes puntos: 1. Conectividad AR-Base de datos. 2. Convenciones sobre configuración. 3. Creando un modelo y varias características CRUD disponibles en AR. 4. Validaciones. 5. Callbacks. 6. Asociaciones de Modelos. Uno-a-uno(one-to-one), uno-a-muchos(one-to-many), muchos-a-muchos (usando opciones :has-and-belongs-to-many y :through).

2 de 23

1. Como AR se conecta a la base de datosEl archivo ‘database.yml’ tiene todas las opciones de configuración asociadas a la base de datos, las cuales AR utiliza para conectarse.
: adapter: mysql encoding: utf8 database: sample1_development username: root password: root host: localhost : adapter: mysql encoding: utf8 database: sample1_production username: root password: root host: localhost : adapter: mysql encoding: utf8 database:...
tracking img