2011-03-24 13 views
4

Lors de la création du modèle de playramework, nous pouvons utiliser la méthode save() ou _save(). Pourquoi ces deux méthodes sont-elles disponibles dans le cadre, quelle en est la raison? (Dans ce contexte, ils font la même chose - enregistrer l'objet à DB). Pourquoi je pose cette question: J'ai utilisé la méthode save() quand j'y ai fait une validation, mais l'utilisateur final de ma classe pourrait utiliser _save() s'il voulait sauvegarder sans validation. Alors je me demande pourquoi il y a deux méthodes qui sont à la fois publiques.méthodes du modèle save() et _save() dans playframework

Je l'ai manipulé comme ceci: Le problème était de trouver l'endroit pour faisant la validation tout en sauvant. En fait j'ai traité ce problème en utilisant anotation @PrePersist pour une méthode près de la sauvegarde() quand je veux être sûr ce code de validation serait invoqué en cas de persistance. Alors maintenant, je suis ok avec save() et _save() :)

Répondre

5

En fait, regardez le code de sauvegarde():

/** 
* store (ie insert) the entity. 
*/ 
public <T extends JPABase> T save() { 
    _save(); 
    return (T) this; 
} 

Il appelle simplement _save() et retour lui-même afin d'enchaîner les appels.
_save est la fonction contenant la vraie logique métier.
save est juste une façade plus pratique pour la conception d'enregistrements actifs.
Pourquoi est-ce que _save public et n'est pas protégé par exemple? Je ne sais pas vraiment.

_save() peut être appelé sans problème IMO mais il renvoie void. C'est tout;)

+1

Oui. Pour moi, il serait plus logique si certaines de ces méthodes seraient protégées. Ensuite, je pourrais utiliser une méthode avec validation et d'autres sans cela, et personne de l'extérieur ne pourrait utiliser la méthode sans validation, ce serait raisonnable. – ses

+1

Il pourrait y avoir une raison mais seulement un développeur de jeu pourrait nous le dire;). Quoi qu'il en soit, protégé est tellement restrictif en Java et il n'y a pas de classe d'amis en Java, donc j'imagine que les gens ont tendance à ne pas utiliser protégé afin de garder toutes les voies ouvertes. – mandubian

+1

Le problème était de trouver l'endroit pour faire la validation tout en économisant. En fait, j'ai traité ce problème en utilisant une anotation @PrePersist pour une méthode proche de save() quand je veux être sûr que le code de validation serait invoqué quand il persisterait. Donc maintenant je vais bien avec save() et _save() :) – ses

Questions connexes