Spring JPA: la méthode Save() pour valider les données de la base de données?
Je suis en utilisant Spring data
pour mon projet, je suis à l'aide d'un Repository
que extends CRUD Repository
.
Mon code fonctionne comme prévu, cependant quand je l'appelle repository.save()
la base de données est pas modifié?
Dois-je aussi en appeler un commit
après ce dans le but de modifier la Base de données? Ou si le repository.save()
de la méthode de modifier automatiquement la base de données?
Généralement, la méthode d'enregistrement doit être enveloppé à l'intérieur d'une transaction (printemps-données ce de façon transparente pour vous). Si vous écrivez vos propres méthodes, vous devez annoter votre modification de la méthode avec
J'ai annoté de la principale méthode que j'appelle enregistrer avec un transactionnelles annotation, mais toujours pas de travail
Pourriez-vous poster le code de votre référentiel, y compris la méthode save + le TransactionManager de configuration?
comment puis-je trouver le gestionnaire de transactions? C'est mon premier projet pour le printemps, merci
Hmm.. je suggère de commencer avec le getting started guide: printemps.io/guides/gs/accès-data-jpa
@Transactional
.J'ai annoté de la principale méthode que j'appelle enregistrer avec un transactionnelles annotation, mais toujours pas de travail
Pourriez-vous poster le code de votre référentiel, y compris la méthode save + le TransactionManager de configuration?
comment puis-je trouver le gestionnaire de transactions? C'est mon premier projet pour le printemps, merci
Hmm.. je suggère de commencer avec le getting started guide: printemps.io/guides/gs/accès-data-jpa
OriginalL'auteur java123999 | 2016-02-26
Vous devez vous connecter pour publier un commentaire.
Lorsque votre application s'exécute, le Gestionnaire de l'Entité associée avec le fil garde le contrôle de modifié ou ajouté des objets, la méthode save() viens de le faire, c'est une note qui dit: "ce doit être enregistré dans la base de données".
La base de données DML (insert,update,delete) n'est pas envoyé à la base de données pendant que vous enregistrez des choses, c'est fait à la fin juste avant de s'engager, il est retardé jusqu'au dernier moment.
Il est possible de l'envoyer à la DML de la base de données à tout moment en utilisant le Gestionnaire de l'Entité de la méthode flush (), en fait, vous pouvez déboguer le journal de base de données et voir vos requêtes, mais cela change à la base de données ne sera visible qu'à l'intérieur de votre connexion DB jusqu'à la commettre; commit() est une méthode de la transaction associés à l'Entité Gestionnaire.
Dans certains cadres comme jouer à la 1.4.x le commet est délivré après la réponse de vue est correctement analysés et rendus.
Bye,
Hans
OriginalL'auteur Hans Poo
Si vous configurez comme ceci
Alors toutes les méthodes annotées avec @Transaction de début et de validation de la transaction si aucune exception n'est levée.
JpaRepository.save()
méthodeLa même chose... n'ai pas très bien compris comment les opérations de travail dans ce cas.
Lorsque vous ajoutez un @Transaction annotation avec la config comme ci-dessus le Printemps conteneur proxy vous de la classe et il va ajouter de code comme les transactions.begin(), transaction.commit() et de transaction.rollback() pour le proxy, qui est le code qui est exécuté. Ou, si vous aimez le printemps conteneur ajoute le code de transaction à vous de classe et des pistes.
OriginalL'auteur Essex Boy