JPA2.0 : entityManager.close() ferme t-il sa transaction?

JPA2.0 : entityManager.close() ferme t-il sa transaction? - Java - Programmation

Marsh Posté le 13-10-2010 à 12:26:53    

Bonjour a tous, je cherche a écrire un test qui exécuterait des opérations de Lecture/écriture sur une base mais dans des transaction séparé.  
 
en gros, je veux :  
   dans la transaction T1, on crée un objet et l’écrit dans la base. T1 est fermée après l’opération.  
    dans la transaction T2 qui suit T1, on lit dans la base et trouve les info.
 

Code :
  1. public class StatisticIndexNodeTest extends AbstractTransactionalJUnit4SpringContextTests {
  2. private StatisticCategory category;
  3. private StatisticValueType type;
  4. private EntityManagerFactory emf;
  5. @PersistenceContext
  6. protected EntityManager entityManager;
  7. @Test
  8. public void testCreateNewNode() {
  9.  final IndexNode node = new IndexNode();
  10.  fillNode(node, 0, category, type);
  11.  entityManager.persist(node);
  12.  entityManager.flush();
  13.  final long id = node.getId();
  14.  entityManager.close();
  15.  entityManager= emf.createEntityManager();
  16.  entityManager.getTransaction().begin();
  17.  final IndexNode noder =
  18.    (IndexNode) entityManager.find(IndexNode.class, Long.valueOf(id));
  19.  nodeAssertions(node, noder);
  20. }
  21. @Before
  22. public void onSetUp() throws Exception {
  23.  category = createCategory();
  24.  type = createType();
  25.  emf = entityManager.getEntityManagerFactory();
  26. }
  27. }


 
 
comme vous avez put le remarquer, je travaille avec "AbstractTransactionalJUnit4SpringContextTests"
 
d'ou ma question : a l'appel de entityManager.close(); la transaction T1 serra t-elle fermée.  
lors de l'appel a "entityManager= emf.createEntityManager();" dans le debuger (sous eclipse) je suis sur que je reçois un nouvel entityManager (id !=) mais je ne vois pas la transaction.
j'ai lu la spec JPA, mais je n'ai rien trouve.  
 
une idée ?

Reply

Marsh Posté le 13-10-2010 à 12:26:53   

Reply

Marsh Posté le 14-10-2010 à 21:02:28    

Que penses-tu de ce test: tu ouvres une 2e transaction, tu écris un truc, tu fais un rollback. Si après ça tu as tjrs les écritures de la 1ère transaction, c'est qu'elle a été correctement commitée et fermée, sinon, tout aura été rollbacké.


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
Reply

Marsh Posté le 21-10-2010 à 10:43:11    

merci, mais ma question  était :
 
"a l'appel de entityManager.close(); la transaction T1 serra t-elle fermée. "


---------------
bougez vous le cul! => http://trainoo.com/
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed