JPA EntityTransaction,创建并持久化新对象

时间:2017-03-16 22:55:37

标签: java jpa eclipselink

我对一些简单的例子感到困惑,我正在寻找Eclipselink和持久化对象。对此非常陌生。在什么时候创建和改变对象以保存在数据库中是否重要?例如是否所有与对象相关的工作都必须在em.getTransaction()之后完成.begin();叫做?或者你可以用那个物体做你需要的东西,然后开始,坚持,关闭?

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

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

2 个答案:

答案 0 :(得分:0)

创建对象时没有区别。开始之后或开始之前。

答案 1 :(得分:0)

实际上没有区别。 因为事务只处理保存在持久化实体的数据库中(实体是一个java对象:在你的情况下为todo)。 你对实体做的最后一件事就是在数据库中刷新它(使用commit()