Doctrine2...Meilleure hydratation de la mode?
Je suis en train de concevoir une pièce système de réservation qui a neuf entités, qui tous se rapportent les uns aux autres. Dans ce cas précis je suis récupération de 10 à 30 lignes de l'entité entry
qui a 25 propriétés. Chaque entrée a un room
qui a 10 propriétés. J'ai besoin de tous les renseignements d'inscription ainsi que entry->room->id
et entry->room->name
. Mais il semble que la doctrine est le chargement de l'ensemble de la room
lorsque j'utilise Query::HYDRATE_ARRAY
. Il semble être à chargement différé dans Query::HYDRATE_OBJECT
plus facilement.
Donc, je me demandais si à l'aide de la Query::HYDRATE_OBJECT
mode est plus rapide ou plus "mieux" que Query::HYDRATE_ARRAY
/Query::HYDRATE_SCALAR
/Query::HYDRATE_SINGLE_SCALAR
. Depuis que je suis la réutilisation de certains vieux code que je voudrais utiliser HYDRATE_ARRAY
mais seulement si ça ne va pas ralentir l'application.
OriginalL'auteur Daniel | 2011-07-22
Vous devez vous connecter pour publier un commentaire.
Mes 2 cents:
HYDRATE_OBJECT
est le mieux pour lorsque vous prévoyez sur l'utilisation de beaucoup de logique d'entreprise avec vos objets. Surtout si vous faites beaucoup de manipulation de données. C'est aussi probablement le plus lent (selon la situation).HYDRATE_ARRAY
est habituellement réservé pour quand vous avez seulement besoin d'un résultat et 1 degrés de données relationnelles et il est destiné à être utilisé pour l'impression/des fins de consultation uniquement.HYDRATE_NONE
est un autre que j'utilise quand je suis seul la sélection d'un très petit sous-ensemble de données (comme un ou deux champs au lieu de la totalité de la ligne). Il se comporte un peu comme une brute résultat de la requête serait.Cela peut aussi être d'intérêt http://www.doctrine-project.org/2010/03/17/doctrine-performance-revisited.html
C'est à partir de la 1.2 docs mais je pense que l'Hydratation conseils s'appliquent dans le 2.0 http://doctrine.readthedocs.org/en/latest/en/manual/improving-performance.html
Sur l'utilisation de
HYDRATE_ARRAY
:Juste une note.
HYDRATE NONE
il ne semble pas exister...est-ce à partir de 1.2? Je suis en utilisantHYDRATE_SCALAR
etHYDRATE_SINGLE_SCALAR
à la place.Vous avez probablement raison. J'ai seulement utilisé 1.2 mais la
SCALAR
méthodes semblent produire les mêmes avantages que lesHYDRATE_NONE
.euh, pouvez-vous me dire le nom de chemin complet vers le fichier qui définit Doctrine_Core? Je pense que mon installation de symfony2 est bancale.
Attention, ma réponse était en se référant à la Doctrine 1.2. Symfony 2 le plus probable utilise Doctrine 2. L'hydratation des constantes semblent faire partie de la classe de Requête dans la Doctrine 2 docs.doctrine-project.org/en/latest/reference/...
OriginalL'auteur Mike B