2009-12-29 19 views
5

Si bien iré por el patrón Fantasma en una relación 1: 1, no estoy seguro si esto es suficiente en una relación 1: n.¿Cómo cargar una relación de uno a muchos en Data Mapper?

Por ejemplo, cuando cargo un objeto Order que puede tener un centenar de objetos Item, primero asignaría NULL a la propiedad items.

La pregunta es:

A) ¿Debo asignar NULL y luego, al primer acceso de la propiedad artículos mirada para todos los pedidos de ese elemento y cargar todos ellos?

B) ¿O debería cargar solo un conjunto de registros liviano que contenga solo todos los id_ordenados y cargar 100 objetos Item Ghost que solo tengan el conjunto de pedido, pero todo lo demás NULL? Y tan pronto como se acceda a un objeto Item para buscar más detalles de él, carga lenta los datos específicos del objeto Item?

Respuesta

1

Bien IMO sus necesidades de carga diferida varían en cada situación. Sin embargo, yo diría que si tiene un pedido lo suficientemente grande como para tener 100 artículos, rara vez hay un momento en el que desee cargar los 100 artículos al mismo tiempo.

Lo que yo recomendaría es que cargue cada artículo bajo demanda, lo que le permite cargar un "página" de artículos o solo un artículo. Por ejemplo, si necesita enumerar todos los elementos, puede cargar "página" esa lista y, dado que cada elemento se puede cargar bajo demanda, simplemente cargará la página seleccionada. Además, para el rendimiento, es probable que desee reciclar esos objetos para que pueda considerar la construcción de 10 elementos fantasmas y luego cargar una "página" a la vez en esos 10 elementos.

Por otro lado, como un artículo se carga a pedido como tal, puede cargar solo un elemento que le permite mostrar todos los detalles de ese artículo, solo cuando lo desee.

Cuestiones relacionadas