Gestion des transactions avec Spring-JPA ?
Bonjour,
J'ai une question qui me chiffonne dans la gestion des transactions avec Spring.
Voici grosso-modo la couche business et DAO :
- une classe business annotée par @Transactional
- une classe DAO avec en attribut entityManager annoté par @PersistenceContext
Je n'utilise pas persistence.xml, je fais tout dans Spring comme ceci :
Code:
1 2 3 4 5 6
| <bean id="uneDAO" class="...." />
<bean id="service" class="...">
<property name="attributDAO" ref="uneDAO" />
</bean>
<bean id="entityManagerFactory" class="...."> propertie....</bean>
<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" /> |
Donc, je sais que le dernier bean c'est celui qui va injecter l'entityManager dans mon DAO mais comment sait-il quelle entityManagerFactory utiliser ?
Si un moment dans mon DAO je ferme l'entityManager, est-ce que Spring va le réinjecter ?
Une autre question : lors de l'exécution de mon service, comment Spring débute une transaction ? Il récupère l'entityManager du DAO et il fait entiyManger.getTrancation().begin() ?
Merci d'avance pour votre aide.