EntityManger вводится аннотацией @PersistenceContext
. Это метод из моего класса «DAO/Repository», который не аннотируется. Этот класс вводится в EJB, который должен получать данные из/в базу данных.Что происходит после EntityManager.persist()
До сих пор я думал, что после того, как метод persist ниже закончен, persistencecontext очищается и данные хранятся в базе данных, но из того, что происходит в моем приложении, я начинаю сомневаться в этом. Я создал источник данных и пул соединений в Glassfish, поэтому я использую транзакции, управляемые контейнерами, насколько мне известно, однако я не использую никаких аннотаций транзакций.
Может ли кто-нибудь пролить свет на это для меня?
public void persist(QuestionFeedback questionFeedback) {
questionFeedback.setCreated(new Date());
entityManager.persist(questionFeedback);
}
Использование Glassfish 3, Java EE6 Совместимость
Так что вы говорите, что бизнес-метод открывает и закрывает транзакцию (тот, который вызывает метод persist выше в моем коде), и после этого транзакция завершена? Или я неправильно понимаю вас? – LuckyLuke
Да, если клиент метода, который вызывает метод persist, не имеет контекста транзакции. Затем в вашем случае контейнер должен заботиться о начале и фиксации транзакции в начале и конце метода. Если у клиента есть существующая транзакция, то ваш метод присоединяется к этому, а фиксация происходит где-то на клиенте. Неважно, сколько слоев этих методов вызывает без определенного атрибута транзакции, логика остается прежней: транзакция начинается и фиксируется в первом. –