Diferencias entre ORM y ActiveRecord

224 views
Skip to first unread message

jordicakephp

unread,
Nov 14, 2008, 3:52:38 AM11/14/08
to CakePHP en Español
Buenos días, grupo

¿Qué diferencia hay entre estos dos patrones de diseño?

Gracias de antemano y un saludo.

Jordi

jordicakephp

unread,
Nov 14, 2008, 6:23:49 AM11/14/08
to CakePHP en Español
Buenos días,

Al final, david hc me abrió los ojos y (creo) que encontré la
explicación a mi problema, que explico aquí.

http://tutorialcakephp.wordpress.com/2008/11/14/13-activerecord-en-cakephp-y-orm/

Si hay alguna cosa que está mal, los comentarios o correciones son
bienvenidos/as.

Gracias y un saludo.

Ricardo Mun~oz A.

unread,
Nov 14, 2008, 8:34:22 AM11/14/08
to cakep...@googlegroups.com
2008/11/14 jordicakephp <jordic...@gmail.com>:

>
> Buenos días, grupo
>
> ¿Qué diferencia hay entre estos dos patrones de diseño?

ninguna. ActiveRecord es una de las forma de implementar ORM. revisa:

http://en.wikipedia.org/wiki/Object-relational_mapping
http://en.wikipedia.org/wiki/Active_record_pattern

(hacer click en bloque izquerdo donde dice Espan~ol si lo necesitas)

y por favor para la proxima a este tipo de correos ponerles como
titulo "OT: blablabla" u "Off-topic: blablabla".

--
Ricardo Mun~oz A.

jordicakephp

unread,
Nov 14, 2008, 10:30:05 AM11/14/08
to CakePHP en Español
Buenas tardes,

Si no hay ninguna diferencia entre ActiveRecord y ORM entonces
ActiveRecord y ORM son la misma cosa, y, si son la misma cosa,
entonces ORM es un patrón de diseño de software. Pero como ORM no es
un patrón de diseño de software, sino un concepto, has caido en la
trampa y yo creo que harías bien en revisar los tuyos.

¡Un saludo! ;-D

Jordi

ORM no es un patrón de diseño de software

On 14 nov, 14:34, "Ricardo Mun~oz A." <ricard...@gmail.com> wrote:
> 2008/11/14 jordicakephp <jordicake...@gmail.com>:
>
>
>
> > Buenos días, grupo
>
> > ¿Qué diferencia hay entre estos dos patrones de diseño?
>
> ninguna. ActiveRecord es una de las forma de implementar ORM. revisa:
>
> http://en.wikipedia.org/wiki/Object-relational_mappinghttp://en.wikipedia.org/wiki/Active_record_pattern

José Lorenzo

unread,
Nov 14, 2008, 10:38:20 AM11/14/08
to cakep...@googlegroups.com
Si pancha plancha con cuatro planchas, ¿con cuantas planchas plancha pancha?

Aja. Cayeron en la trampa :P

2008/11/15 jordicakephp <jordic...@gmail.com>

Ricardo Mun~oz A.

unread,
Nov 14, 2008, 10:40:29 AM11/14/08
to cakep...@googlegroups.com
2008/11/14 jordicakephp <jordic...@gmail.com>:

>
> Buenas tardes,
>
> Si no hay ninguna diferencia entre ActiveRecord y ORM entonces
> ActiveRecord y ORM son la misma cosa, y, si son la misma cosa,
> entonces ORM es un patrón de diseño de software. Pero como ORM no es
> un patrón de diseño de software, sino un concepto, has caido en la
> trampa y yo creo que harías bien en revisar los tuyos.

ORM es un concepto que se puede implementar con ActiveRecord, por lo tanto

ActiveRecord (implementacion) == ORM (concepto)

por favor revisa la documentacion antes de hacer preguntas no
relacionadas con CakePHP en la lista.

--
Ricardo Mun~oz A.

jordicakephp

unread,
Nov 14, 2008, 10:43:42 AM11/14/08
to CakePHP en Español
Está bien, perdón. Seguramente tienes razón y ORM es un patrón, como
dicen algunos sitios. Es difícil afianzar conceptos en Internet, con
tanta información. Esta era una duda que tenía y me alegra saber que
al menos alguien dice que ORM es un patrón. Ok. No cuelgo más posts de
tipo OT que ya veo que no son bienvenidos. Un saludo.

On 14 nov, 16:40, "Ricardo Mun~oz A." <ricard...@gmail.com> wrote:
> 2008/11/14 jordicakephp <jordicake...@gmail.com>:
>
>
>

José Lorenzo

unread,
Nov 14, 2008, 10:38:20 AM11/14/08
to cakep...@googlegroups.com
Si pancha plancha con cuatro planchas, ¿con cuantas planchas plancha pancha?

Aja. Cayeron en la trampa :P

2008/11/15 jordicakephp <jordic...@gmail.com>

David Valdez

unread,
Nov 14, 2008, 10:47:53 AM11/14/08
to cakep...@googlegroups.com
Hasta donde yo puedo comprender (y no he leído el articulo en cuestión)

ORM es el mapeo  entre diferentes tablas, es decir,   es el patrón que permite relacionar las tablas unas con otras,  el que permite usar "hasOne","hasMany"  etc.

Y active record simplemente permite usar las tablas como objetos es todo.

[OFF-TOPIC] Por cierto este tema se me hace harto interesante  comienza a ser desagradable que sean tan extrictos con los correos de la lista ¬¬

Alfonso Nishikawa

unread,
Nov 14, 2008, 10:53:11 AM11/14/08
to CakePHP en Español
He mirado tus enlaces y las conclusiones que extraigo con:

- Active Record es un patrón de diseño.
- ORM es la aplicación concreta del patróna la orientación a objetos
con una base relacional.

Luego ORM es una manera más de implementar el patrón ActiveRecord.

Un saludo,

Alfonso


On 14 nov, 14:34, "Ricardo Mun~oz A." <ricard...@gmail.com> wrote:
> 2008/11/14 jordicakephp <jordicake...@gmail.com>:
>
>
>

Ricardo Mun~oz A.

unread,
Nov 14, 2008, 10:53:11 AM11/14/08
to cakep...@googlegroups.com
2008/11/14 jordicakephp <jordic...@gmail.com>:

>
> Está bien, perdón. Seguramente tienes razón y ORM es un patrón, como
> dicen algunos sitios. Es difícil afianzar conceptos en Internet, con
> tanta información. Esta era una duda que tenía y me alegra saber que
> al menos alguien dice que ORM es un patrón.

no he dicho que ORM sea un patron, si revisas los links de Wikipedia
dice claramente que ORM es una tecnica/concepto. tu pregunta no tiene
sentido ya que estas comparando "un vehiculo motorizado con 4 ruedas"
con "vehiculo marca Toyota an~o 2008".

no tiene sentido tu pregunta. algo mas interesante podria ser "es
ActiveRecord una buena implementacion de ORM?", o "es buena la
implementacion de ActiveRecord de CakePHP?".

> Ok. No cuelgo más posts de tipo OT que ya veo que no son bienvenidos.

tampoco he dicho que los OT no son bienvenidos. simplemente debes
indicar en el titulo del mensaje que es un OT, asi los suscritos
pueden elegir ignorar el thread completo ya que no tiene relacion con
CakePHP.

--
Ricardo Mun~oz A.

jordicakephp

unread,
Nov 14, 2008, 10:58:12 AM11/14/08
to CakePHP en Español
Buenas tardes gurpo,

Me alegra saber que hay alguien que se arriesga con una explicación
sobre esto, que, personalmente, no encuentro tan sencilla. Esto es
algo que cualquier principiante no sabe y estoy convencido que hay
muchas personas con más kilómetros recorridos que no entiende del
todo. Bueno sí, usamos los saves y funciona, usamos los findAll y
tambíen, ok. ¿No decíais que me fuera a la API? Pues ya lo he hecho, y
de ahí mi pregunta.

De todo esto deduzco que los expertos de este grupo no lo son tanto
(como en el del grupo en inglés) y que seguramente no saben dar una
explicación buena a esta pregunta y su forma de hacerme callar es
esta, mándandome a la OT. Primero fue la API y ahora la OT, ala.

¡Un saludo!

Jordi

On 14 nov, 16:47, "David Valdez" <da...@cakephp-es.org> wrote:
> Hasta donde yo puedo comprender (y no he leído el articulo en cuestión)
>
> ORM es el mapeo  entre diferentes tablas, es decir,   es el patrón que
> permite relacionar las tablas unas con otras,  el que permite usar
> "hasOne","hasMany"  etc.
>
> Y active record simplemente permite usar las tablas como objetos es todo.
>
> [OFF-TOPIC] Por cierto este tema se me hace harto interesante  comienza a
> ser desagradable que sean tan extrictos con los correos de la lista ¬¬
>
> El 14 de noviembre de 2008 9:38, José Lorenzo <jose....@gmail.com> escribió:
>
>
>
> > Si pancha plancha con cuatro planchas, ¿con cuantas planchas plancha
> > pancha?
>
> > Aja. Cayeron en la trampa :P
>
> > 2008/11/15 jordicakephp <jordicake...@gmail.com>
>
> >> Buenas tardes,
>
> >> Si no hay ninguna diferencia entre ActiveRecord y ORM entonces
> >> ActiveRecord y ORM son la misma cosa, y, si son la misma cosa,
> >> entonces ORM es un patrón de diseño de software. Pero como ORM no es
> >> un patrón de diseño de software, sino un concepto, has caido en la
> >> trampa y yo creo que harías bien en revisar los tuyos.
>
> >> ¡Un saludo! ;-D
>
> >> Jordi
>
> >> ORM no es un patrón de diseño de software
>
> >> On 14 nov, 14:34, "Ricardo Mun~oz A." <ricard...@gmail.com> wrote:
> >> > 2008/11/14 jordicakephp <jordicake...@gmail.com>:
>
> >> > > Buenos días, grupo
>
> >> > > ¿Qué diferencia hay entre estos dos patrones de diseño?
>
> >> > ninguna. ActiveRecord es una de las forma de implementar ORM. revisa:
>
> >>http://en.wikipedia.org/wiki/Object-relational_mappinghttp://en.wikip...
>
> >> > (hacer click en bloque izquerdo donde dice Espan~ol si lo necesitas)
>
> >> > y por favor para la proxima a este tipo de correos ponerles como
> >> > titulo "OT: blablabla" u "Off-topic: blablabla".
>
> >> > --
> >> > Ricardo Mun~oz A.- Ocultar texto de la cita -
>
> - Mostrar texto de la cita -

jordicakephp

unread,
Nov 14, 2008, 10:59:50 AM11/14/08
to CakePHP en Español
Quería decir que los del gurpo de Cake en inglés me parecen más
expertos. Quizás el paréntesis que puse da pie a confusión. Perdón...
jeje.

Un saludo.
> > - Mostrar texto de la cita -- Ocultar texto de la cita -

jordicakephp

unread,
Nov 14, 2008, 11:08:34 AM11/14/08
to CakePHP en Español
Gracias,

Querrás decir que el patrón ActiveRecord es una forma de implementar
ORM. ;-) Yo sólo buceé un poco en la capa de abstracción de los
modelos, como me propuso david hc (por cierto, gracias por tu
respuesta ;-)

Saludos!

On 14 nov, 16:53, Alfonso Nishikawa <alfonso.nishik...@gmail.com>
wrote:

Alfonso Nishikawa

unread,
Nov 14, 2008, 11:17:31 AM11/14/08
to cakep...@googlegroups.com
Sí, sí, tienes razón. Gracias por la corrección :)

Alfonso

El día 14 de noviembre de 2008 17:08, jordicakephp
<jordic...@gmail.com> escribió:

David Valdez

unread,
Nov 14, 2008, 11:17:45 AM11/14/08
to cakep...@googlegroups.com
El 14 de noviembre de 2008 9:58, jordicakephp <jordic...@gmail.com> escribió:

Buenas tardes gurpo,

Me alegra saber que hay alguien que se arriesga con una explicación
sobre esto, que, personalmente, no encuentro tan sencilla. Esto es
algo que cualquier principiante no sabe y estoy convencido que hay
muchas personas con más kilómetros recorridos que no entiende del
todo. Bueno sí, usamos los saves y funciona, usamos los findAll y
tambíen, ok. ¿No decíais que me fuera a la API? Pues ya lo he hecho, y
de ahí mi pregunta.

A este parrafo no lo entiendo,   yo me guíe para concluir que es orm por este párrafo de wikipedia:

"This could be modeled in an object-oriented implementation by a "person object" with "slots" to hold the data that comprise the entry: the person's name, a list (or array) of phone numbers, and a list of addresses. The list of phone numbers would itself contain "phone number objects" and so on. The address book entry is treated as a single value by the programming language (it can be referenced by a single variable, for instance). Various methods can be associated with the object, such as a method to return the preferred phone number, the home address, and so on."


Además también me guíe por que  en algunas ocasiones uso kohana php  y en kohana su biblioteca  de ORM sirve exclusivamente para esto por eso  concluí que a esto se refiere al hablar de orm (http://docs.kohanaphp.com/libraries/orm)

 
 

De todo esto deduzco que los expertos de este grupo no lo son tanto
(como en el del grupo en inglés) y que seguramente no saben dar una
explicación buena a esta pregunta y su forma de hacerme callar es
esta, mándandome a la OT. Primero fue la API y ahora la OT, ala.

Me sorprende que puedas  deducir  la capacidad de un programador en función del conocimiento de conceptos y no en su capacidad  de resolver problemas.

Vamos, a mi me paso que no sabía la definición de colas y listas y  cuando lo aprendí me di cuenta que llevaba usándolo un rato.
 

¡Un saludo!

Jordi



En fin errar es de humanos y quizás si estoy completamente equivocado  (que si es así estaría bien saberlo)

Por todo lo demás  esta lista comienza a ser desagradable con sus respuestas  fuera de tono ¬¬



 

jordicakephp

unread,
Nov 14, 2008, 11:30:07 AM11/14/08
to CakePHP en Español
Gracias David,

> > De todo esto deduzco que los expertos de este grupo no lo son tanto
> > (como en el del grupo en inglés) y que seguramente no saben dar una
> > explicación buena a esta pregunta y su forma de hacerme callar es
> > esta, mándandome a la OT. Primero fue la API y ahora la OT, ala.
>
> Me sorprende que puedas  deducir  la capacidad de un programador en función
> del conocimiento de conceptos y no en su capacidad  de resolver problemas.
>
> Vamos, a mi me paso que no sabía la definición de colas y listas y  cuando
> lo aprendí me di cuenta que llevaba usándolo un rato.

Pues me habré expresado mal porque en ningún momento hago un juicio
sobre la capacidad de los programadores. Al contrario, yo lo que más
valoro es la capacidad de resolver problemas de la que hablas y
deducía eso de las respuestas fuera de tono, no de la capacidad de los
programadores. Un saludo.!

Ricardo Mun~oz A.

unread,
Nov 14, 2008, 12:16:51 PM11/14/08
to cakep...@googlegroups.com
2008/11/14 Alfonso Nishikawa <alfonso....@gmail.com>:

>
> He mirado tus enlaces y las conclusiones que extraigo con:
>
> - Active Record es un patrón de diseño.
> - ORM es la aplicación concreta del patróna la orientación a objetos
> con una base relacional.
>
> Luego ORM es una manera más de implementar el patrón ActiveRecord.

revisa los enlaces denuevo, es al reves.

--
Ricardo Mun~oz A.

Ricardo Mun~oz A.

unread,
Nov 14, 2008, 12:53:13 PM11/14/08
to cakep...@googlegroups.com
2008/11/14 jordicakephp <jordic...@gmail.com>:

>
> Buenas tardes gurpo,
>
> Me alegra saber que hay alguien que se arriesga con una explicación
> sobre esto, que, personalmente, no encuentro tan sencilla. Esto es
> algo que cualquier principiante no sabe

si el principiante no sabe debe consultar la documentacion. nadie va a
perder tiempo explicando algo que esta bien documentado.

> y estoy convencido que hay muchas personas con más kilómetros recorridos que no entiende del todo.

si pretendes poder "enteder" como las cosas funcionan, no terminaras
nunca haciendo algo concreto. estamos aca para discutir el uso de
CakePHP, no para explicar/entender como funciona internamente un motor
de base de datos, un servidor web, el patron ActiveRecord, etc.

> Bueno sí, usamos los saves y funciona, usamos los findAll y
> tambíen, ok. ¿No decíais que me fuera a la API? Pues ya lo he hecho, y
> de ahí mi pregunta.

la API es la interfaz de programacion de CakePHP. si quieres usar
CakePHP usa la API, si quieres saber porque los desarrolladores (de
CakePHP) usaron el patron ActiveRecord para la implementacion de ORM
contactate con ellos. (dudo que te respondan, tiene cosas mucho mas
importantes que hacer)

--
Ricardo Mun~oz A.

jordicakephp

unread,
Nov 17, 2008, 3:27:17 AM11/17/08
to CakePHP en Español
Buenos días grupo y buen lunes.

Que se discuta el uso de CakePHP me parece muy bien y lo encuentro muy
práctico. Mi idea es llegar a un punto en que pueda discutir sólo su
uso y no un poco su funcionamiento. Personalmente, pienso que el API y
la implementación están bastante relacionados, y si se manda a una
persona a la API es completamente normal que se pierda un poco en su
funcionamiento, a no ser que alguien le explique. Por lo demás, creo
que ya poco más se puede sacar de este hilo, jeje. Yo quería imprimir
por pantalla registros relacionados y nadie me dijo. ¡Un saludo!

On 14 nov, 18:53, "Ricardo Mun~oz A." <ricard...@gmail.com> wrote:
> 2008/11/14 jordicakephp <jordicake...@gmail.com>:
>
>
>

Ricardo Mun~oz A.

unread,
Nov 17, 2008, 9:48:55 AM11/17/08
to cakep...@googlegroups.com
2008/11/17 jordicakephp <jordic...@gmail.com>:

>
> Buenos días grupo y buen lunes.
>
> Que se discuta el uso de CakePHP me parece muy bien y lo encuentro muy
> práctico. Mi idea es llegar a un punto en que pueda discutir sólo su
> uso y no un poco su funcionamiento. Personalmente, pienso que el API y
> la implementación están bastante relacionados, y si se manda a una
> persona a la API es completamente normal que se pierda un poco en su
> funcionamiento, a no ser que alguien le explique.

si trabajas en PHP imaginate la API como el manual de referencia de
PHP donde esta descrita la sintaxis y ayuda de las funciones de PHP
ordenados por tipos de funciones. la documentacion de la API de Cake
cumple el mismo proposito, la unica diferencia es que en el manual de
PHP muchas veces vienen ejemplos siendo que en la API de Cake no hay
ejemplos, para eso se debe consulltar el Manual de Cake. por lo tanto,
si no estas acostumbrado a revisar el Manual Oficial de PHP tampoco le
sacaras mucho provecho a la API de Cake...

> Por lo demás, creo
> que ya poco más se puede sacar de este hilo, jeje. Yo quería imprimir
> por pantalla registros relacionados y nadie me dijo.

no mientas. te indique en otro mail como recomendacion y buena
practica que uses Bake para crear los controladores y vistas a partir
de los modelos donde tu mismo debes indicar las relaciones. tendras el
codigo que modifica, muestra, elimina registros relacionados.

para empezar con Cake no hay mejor ayuda y ejemplos que el codigo
generado con Bake.

--
Ricardo Mun~oz A.

Dardo Sordi Bogado

unread,
Nov 17, 2008, 7:00:09 PM11/17/08
to cakep...@googlegroups.com
> ORM es el mapeo entre diferentes tablas, es decir, es el patrón que
> permite relacionar las tablas unas con otras, el que permite usar
> "hasOne","hasMany" etc.

No, eso no es ORM. ORM = Object Ralational Mapping, es una técnica
para "traducir" del modelo Relacional al modelo de Objetos.

El modelo relacional consiste en representar información en forma de
tablas y registros y el modelo de objetos consiste en abstraer
responsabilidades en clases y objetos que contienen (ocultan) la
información y ofrecen una interfaz para realizar operaciones sobre
ella.

> Y active record simplemente permite usar las tablas como objetos es todo.

De hecho, ActiveRecord permite mapear cada registro de una tabla con un objeto.

Saludos,
- Dardo Sordi.

jordicakephp

unread,
Nov 18, 2008, 4:00:52 AM11/18/08
to CakePHP en Español
En otras palabras, ORM es la traducción de ambos modelos, que se
encargan de implementar patrones de diseño como ActiveRecord, por
ejemplo, ¿no?

¡Un saludo!

On 18 nov, 01:00, "Dardo Sordi Bogado" <dardoso...@gmail.com> wrote:
> > ORM es el mapeo  entre diferentes tablas, es decir,   es el patrón que
> > permite relacionar las tablas unas con otras,  el que permite usar
> > "hasOne","hasMany"  etc.
>
> No, eso no es ORM. ORM = Object Ralational Mapping, es una técnica
> para "traducir" del modelo Relacional al modelo de Objetos.
>
> El modelo relacional consiste en representar información en forma de
> tablas y registros y el modelo de objetos consiste en abstraer
> responsabilidades en clases y objetos que contienen (ocultan) la
> información y ofrecen una interfaz para realizar operaciones sobre
> ella.
>
> > Y active record simplemente permite usar las tablas como objetos es todo.
>
> De hecho, ActiveRecord permite mapear cada registro de una tabla con un objeto.
>
> Saludos,
> - Dardo Sordi.
>
>
>
> > [OFF-TOPIC] Por cierto este tema se me hace harto interesante  comienza a
> > ser desagradable que sean tan extrictos con los correos de la lista ¬¬
>
> > El 14 de noviembre de 2008 9:38, José Lorenzo <jose....@gmail.com> escribió:
>
> >> Si pancha plancha con cuatro planchas, ¿con cuantas planchas plancha
> >> pancha?
>
> >> Aja. Cayeron en la trampa :P
>
> >> 2008/11/15 jordicakephp <jordicake...@gmail.com>
>
> >>> Buenas tardes,
>
> >>> Si no hay ninguna diferencia entre ActiveRecord y ORM entonces
> >>> ActiveRecord y ORM son la misma cosa, y, si son la misma cosa,
> >>> entonces ORM es un patrón de diseño de software. Pero como ORM no es
> >>> un patrón de diseño de software, sino un concepto, has caido en la
> >>> trampa y yo creo que harías bien en revisar los tuyos.
>
> >>> ¡Un saludo! ;-D
>
> >>> Jordi
>
> >>> ORM no es un patrón de diseño de software
>
> >>> On 14 nov, 14:34, "Ricardo Mun~oz A." <ricard...@gmail.com> wrote:
> >>> > 2008/11/14 jordicakephp <jordicake...@gmail.com>:
>
> >>> > > Buenos días, grupo
>
> >>> > > ¿Qué diferencia hay entre estos dos patrones de diseño?
>
> >>> > ninguna. ActiveRecord es una de las forma de implementar ORM. revisa:
>
> >>> >http://en.wikipedia.org/wiki/Object-relational_mappinghttp://en.wikip...
>
> >>> > (hacer click en bloque izquerdo donde dice Espan~ol si lo necesitas)
>
> >>> > y por favor para la proxima a este tipo de correos ponerles como
> >>> > titulo "OT: blablabla" u "Off-topic: blablabla".
>
> >>> > --
Reply all
Reply to author
Forward
0 new messages