JPA EntityManager.flu sh () не вызывается из контейнера glassfi sh 5.1 EE.
В среде Java SE:
EntityTransaction t = em.getTransaction();
t.begin();
// persist entities
em.persist(entity);
t.commit();
commit () будет flu sh сущности в контексте персистентности.
Java EE среда, например Glassfi sh:
@Stateless
public class DataManagerBean {
@PersistenceContext
EntityManager em;
public void persist(Object entity) {
em.persist(entity);
}
}
JSF Bean:
@Named
@ViewScoped
public class FooBean {
@EJB
DataManagerBean dataManagerBean;
public void createFoo() {
dataManagerBean.persist(foo);
}
}
Приложение не может вызовите em.getTransaction (). Транзакция управляется контейнером. Поставщик JPA entityManager.flu sh () не вызывается до вызова entityManager.close (). В результате объект не создается в базе данных.
В среде EE соединение с базой данных, полученное поставщиком JPA EntityManager, совпадает с тем, которое используется контейнером?
Как контейнер EE сообщает JPA провайдер для гриппа sh сущностей для сохранения, если грипп sh () не вызывается?