Récupération des objets métier Enterprise Object Framework II
Accès à la base de données avec EOF L ’abstraction par rapport à la base pas de requête SQL à écrire les résultats obtenus sont des objets
Récupérer les objets Le projet doit contenir un EOModel Les objets de type « EOFetchSpecification » permettent de spécifier les objets à récupérer L ’objet de type EOEditingContext se charge de récupérer les objets Les objets sont récupérés dans un NSArray
Récupérer les objets « Tous les étudiants dont le nom :EOEditingContext :EOFetchSpecification « Tous les étudiants dont le nom commence par `d` » Marc:Etudiant nom=« Dupont » prenom=« Marc » Paul:Etudiant nom=« Durand » prenom=« Paul » :NSArray EOF DB
EOFetchSpecification
EOFetchSpecification :EOQualifier :EOFetchSpecification entityName=``Etudiant`` qualifier= sortOrderings= :NSArray :EOSortOrdeing :EOSortOrdering
dans le code... Récupérer toutes les lignes de la table étudiant EOFetchSpecification spec = new EOFetchSpecification(``Etudiant``,null,null); Récupérer tous les étudiants dont le nom commence par `d` EOQualifier qual = EOQualifier.qualifierWithQualifierFormat("nom like `d*`",null); EOFetchSpecification spec = new EOFetchSpecification(``Etudiant``,qual,null);
...dans le code... Récupérer tous les étudiants dont le nom commence par `d` et dont le tuteur est Rossi NSMutableArray args = new NSMutableArray(); args.addObject("d*"); args.addObject("Rossi"); EOQualifier qual = EOQualifier.qualifierWithQualifierFormat ("nom like %@ AND tuteur.nom = %@",args); EOFetchSpecification spec = new EOFetchSpecification(``Etudiant``,qual,null);
EOSortOrdering :EOFetchSpecification entityName=``Etudiant`` qualifier= sortOrderings= :NSArray :EOSortOrdering key= "nom" selector=CompareAscending :EOSortOrdering key= "age" selector=CompareDescending
...dans le code... Récupérer tous les étudiants dont le nom commence par `d`, dont le tuteur est Rossi ; les résultats doivent être classés dans l ’ordre alphabétique des noms, si des étudiants ont le même nom, les classer du plus vieux au plus jeune NSMutableArray orderings = new NSMutableArray(); EOSortOrdering sortOrd1 = new EOSortOrdering ("nom",CompareAscending); EOSortOrdering sortOrd2 = new EOSortOrdering ("age",CompareDescending); orderings.addObject(sortOrd1); orderings.addObject(sortOrd2);
...dans le code... NSMutableArray args = new NSMutableArray(); args.addObject("d*"); args.addObject("Rossi"); EOQualifier qual = EOQualifier.qualifierWithQualifierFormat ("nom like %@ AND tuteur.nom = %@",args); EOFetchSpecification spec = new EOFetchSpecification (``Etudiant``,qual,orderings);
EOEditingContext Sait récupérer les objets métiers à partir d ’une EOFetchSpecification Est le gardien du graphe d ’objets métier récupérés : Observe et enregistre toutes les modifications sur les objets métiers récupérés Sait sauvegarder ou annuler les changements effectués sur les objets métiers récupérés
EOEditingContext Chaque session dispose d ’un EOEditingContext par défaut EOEditingContext ec = session().defaultEditingContext();
...dans le code. ... EOFetchSpecification spec = new EOFetchSpecification (``Etudiant``,qual,sortOrderings); EOEditingContext ec = session().defaultEditingContext(); NSArray resultats = ec.objectsWithFetchSpecification(spec);
...dans le code. Le tableau « resultats » contient des objets ! ... EOFetchSpecification spec = new EOFetchSpecification (``Etudiant``,qual,sortOrderings); EOEditingContext ec = session().defaultEditingContext(); NSArray resultats = ec.objectsWithFetchSpecification(spec); Le tableau « resultats » contient des objets !
EOUtilities La classe EOUtilities offre des méthodes statiques pour simplifier la mise en œuvre de récupérations simples Les méthodes de EOUtilities ne permettent pas l ’utilisation de EOSortOrderings Les méthodes de EOUtilities reçoivent toujours en premier argument un EOEditingContext
Dans le code EOEditingContext ec = session().defaultEditingContext(); NSArray resultats; resultats = EOUtilities.objectsForEntityNamed(ec," Etudiant "); resultats= EOUtilities.objectsMatchingKeyAndValue (ec," Etudiant ", "tuteur.nom", "Rossi"); Etudiant etud = (Etudiant)objectMatchingKeyAndValue (ec," Etudiant ", "numeroInscription", "IU4065A");
EOFetchSpecification avec EOModeler
EOFetchSpecification avec EOModeler Ensuite dans le code EOEditingContext ec = session().defaultEditingContext(); NSArray resultats; NSMutableDictionary bindings = new NSMutableDictionary(); bindings.setObjectForKey("Rossi", "nom"); resultats = EOUtilities.objectsWithFetchSpecificationAndBindings (ec, "Etudiant", "EtudiantParNomEtParTuteur",bindings);
Récupération des objets métier Enterprise Object Framework II