Как работает синхронизация? - PullRequest
1 голос
/ 10 апреля 2019

Например, у меня есть @Stateless java bean:

@Stateless(mappedName = "test") 
public class Test implements ITest
{
    @Override
    public void updateActivity
      (SomeObj activity)
      throws Exception
    {
        em.persist(activity);
    } 
}

Поскольку это bean-объект, управляемый контейнером, то скажите мне, когда контейнер решает синхронизировать контекст с БД? В этом случае я сразу вижу результаты в БД, но иногда они, похоже, не появляются там сразу, верно?

Пожалуйста, объясните мне, как работает синхронизация с контекстом и БД в режиме управления контейнером? Когда контейнер решает синхронизировать контекст с БД?

1 Ответ

0 голосов
/ 10 апреля 2019

Это будет обусловлено конфигурацией распространения транзакции , поскольку ваш EJB-компонент может быть одним из многих управляемых EJB-компонентов, участвующих в одной транзакции. Это становится более сложным, если в полете есть несколько источников транзакций, например XA 2PC . Как правило, изменения будут сбрасываться в базу данных при фиксации транзакции, однако это также зависит от уровня изоляции транзакции или наличия точек сохранения при использовании вложенных транзакций.

Проверьте документацию аннотации @TransactionAttribute или найдите учебник , который объясняет распространение транзакции.

...