2009-09-03 6 views
4

comment pourrais-je aller sur la création d'un grand nombre-plusieurs entre les objets de données dans Google App Engine (en utilisant JDO)plusieurs à plusieurs dans le moteur java google ap

La page du moteur d'application parle de 1-nombreux et 1- 1 mais pas beaucoup-beaucoup. N'importe quel exemple de code sera très apprécié

Répondre

8

Typiquement pour un très grand nombre, vous feriez un deux 1-manys. Et des app engine docs on relationships:

De nombreux à-plusieurs Nous pouvons modéliser plusieurs-à-plusieurs en maintenant des collections de clés des deux côtés de la relation. Nous allons ajuster notre exemple pour laisser des aliments garder une trace des personnes qui le considèrent comme un favori:

Person.java 
import java.util.Set; 
import com.google.appengine.api.datastore.Key; 

// ... 
    @Persistent 
    private Set<Key> favoriteFoods; 
Food.java 
import java.util.Set; 
import com.google.appengine.api.datastore.Key; 

// ... 
    @Persistent 
    private Set<Key> foodFans; 

Dans cet exemple, la personne maintient un ensemble de valeurs clés qui identifient les objets alimentaires qui sont les favoris, et l'aliment conserve un ensemble de valeurs clés qui identifient de manière unique les objets Personne qui le considèrent comme un favori. Lors de la modélisation d'un grand nombre à plusieurs en utilisant des valeurs clés, sachez qu'il est de la responsabilité de l'application de maintenir les deux côtés de la relation: Album.java

// ... 
public void addFavoriteFood(Food food) { 
    favoriteFoods.add(food.getKey()); 
    food.getFoodFans().add(getKey()); 
} 

public void removeFavoriteFood(Food food) { 
    favoriteFoods.remove(food.getKey()); 
    food.getFoodFans().remove(getKey()); 
} 

Notez que si une instance de la personne et une instance de Food contenue dans Person.favoriteFoods appartient au même groupe d'entités, il n'est pas possible de mettre à jour la personne et son aliment favori en une seule transaction. S'il n'est pas possible de co-localiser les objets dans le même groupe d'entités, l'application doit tenir compte de la possibilité que les aliments favoris d'une personne soient mis à jour sans la mise à jour correspondante des ventilateurs ou, inversement, sera mis à jour sans la mise à jour correspondante à l'ensemble des aliments préférés du ventilateur.

3

This page a des informations sur les many-to-many. Ce n'est pas dans la table des matières, mais vous pouvez le trouver en cherchant «many-to-many».

Nous pouvons modéliser une relation plusieurs-à-plusieurs en maintenant des collections de clés des deux côtés de la relation. Nous allons ajuster notre exemple pour laisser des aliments garder une trace des personnes qui le considèrent comme un favori:

Person.java

import java.util.Set; 
import com.google.appengine.api.datastore.Key; 

// ... 
    @Persistent 
    private Set<Key> favoriteFoods; 

Food.java

import java.util.Set; 
import com.google.appengine.api.datastore.Key; 

// ... 
    @Persistent 
    private Set<Key> foodFans; 
Questions connexes