2017-03-16 18 views
0

私は、Eclipselinkと永続オブジェクトを探している簡単な例をいくつか混同しています。これは非常に新しいです。データベースに保存するオブジェクトを作成して突き替えるのはどんな時に重要ですか?例えばオブジェクトで行うすべての作業は、em.getTransaction()。begin();の後に行う必要があります。と呼ばれる?またはあなたはそのオブジェクトで必要なことを何でもしてから始め、持続して、閉じることができますか?JPA EntityTransaction、新しいオブジェクトの作成と永続化

この例はTomcatで使用しています。非JTA RESOURCE_LOCAL

以下の問題の違い:

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(); 

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

いいえ、何も変更されません。 –

+0

これは、EntityTransactionのbeginメソッドのソースコードを読んだときに考えたことです。私が見ているすべての例が同じであるため、私は狂っていたと思った – JonnyD91

答えて

0

あなたがオブジェクトを作成するときには違いはありません。始める前または始める前に。

0

実際には違いはありません。 トランザクションは永続エンティティのデータベースに保存するだけです(エンティティはJavaオブジェクトです:あなたの場合はtodoです)。 エンティティで最後に行うことは、データベース(commit())でフラッシュしています

関連する問題