2017-03-16 9 views
0

Ich habe einige Verwirrung mit einigen einfachen Beispielen, die ich für Eclipselink und persistente Objekte betrachte. Sehr neu dazu. Spielt es eine Rolle, an welcher Stelle ein Objekt erstellt und mutiert wird, um es in einer Datenbank zu speichern? z.B. Müssen alle Arbeiten, die Sie mit dem Objekt machen, NACHEM.getTransaction() ausgeführt werden. wird genannt? oder kannst du tun, was immer du brauchst mit diesem Objekt und dann anfangen, zu bestehen, zu schließen?JPA EntityTransaction, Erstellen und Persistieren eines neuen Objekts

Ich verwende dieses Beispiel mit Tomcat. Nicht-jta RESOURCE_LOCAL

Die Unterschiede in der Frage unter:

EntityManagerFactory factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME); 
    EntityManager em = factory.createEntityManager(); 

// Creating and mutating object BEFORE begin() is called 
    Todo todo = new Todo(); 
    todo.setSummary("sum"); 
    todo.setDescription("desc"); 

    // create new todo 
    em.getTransaction().begin(); 
    em.persist(todo); 
    em.getTransaction().commit(); 

Vs

EntityManagerFactory factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME); 
EntityManager em = factory.createEntityManager(); 


em.getTransaction().begin(); 

// Creating and mutating object AFTER begin() is called 
Todo todo = new Todo(); 
todo.setSummary("sum"); 
todo.setDescription("desc"); 

em.persist(todo); 
em.getTransaction().commit(); 
+0

Nein, es ändert nichts. –

+0

Ok, das ist was ich dachte, wenn ich den Quellcode für die EntityTransaction begin-Methode lese. Dachte, ich würde verrückt werden, weil jedes Beispiel, das ich sehe, dasselbe ist – JonnyD91

Antwort

0

gibt es keinen Unterschied, wenn Sie erstellen Sie das Objekt. nach Beginn oder vor Beginn.

0

In der Tat gibt es keinen Unterschied. Da die Transaktion nur das Speichern der persistenten Entität in der Datenbank behandelt (Entität ist ein Java-Objekt: todo in Ihrem Fall). Das letzte, was Sie mit Ihrer Entität tun, ist das Löschen in der Datenbank (mit commit())

Verwandte Themen