2010-11-11 4 views
2

J'essaie de comprendre le concept de UOW et comment je peux l'implémenter dans mon application spring/jpa/hibernate avec DDD. Je rends mes méthodes transactionnelles, mais comment puis-je m'assurer que toutes les entités qui ont été modifiées dans la transaction sont persistantes? Est-ce en utilisant des collections en cascade ou y a-t-il un autre moyen?Comment implémenter l'unité de travail au printemps et JPA/Hibernate?

+0

Vous pouvez également étudier l'exemple d'application DDD - http://domaindrivendesign.org/node/42 –

Répondre

3

Hibernate implémente l'unité de travail en interne. C'est-à-dire que toutes les modifications apportées à persistantes entités à l'intérieur d'une transaction sont conservées automatiquement (sauf si vous avez une transaction avec readOnly = true).

les options Cascading sont nécessaires pour configurer la transition des graphiques de transitoires ou détachés entités à persistantes état.

Voir aussi:

+0

Ok, donc si j'ai une méthode de service d'application "@transactional updateUser (User user)" alors il n'est pas nécessaire d'appeler repository.store (utilisateur) après avoir changé l'utilisateur? –

+1

@Piotr: Si 'User' vient de l'extérieur de la transaction, c'est peut-être _detached_, donc vous devez le 'fusionner()' en contexte de persistance afin de le rendre _persistent_. – axtavt

1

comment puis-je faire en sorte que toutes les entités qui ont été modifiées dans la transaction se persistaient?

C'est le comportement par défaut de l'EntityManager JPA.

Lire this section of the Java EE 5 tutorial (tout le long de entité de données de synchronisation de la base de données)