Допустим, у меня есть два EJBs A и B:
public class A implements AInterface {
private B b;
...
//This method will NOT access database directly
public void a() {
//do something
b.b();
//do something
}
...
}
public class B implements BInterface {
@TransactionAttribute(TransactionAttributeType.SUPPORTS)
public void b() {
//Read database
}
}
- A.a () не подключается к базе данных, но вызывает B.b ()
- B.b () делает SELECT для базы данных
- A.a () имеет атрибут транзакции по умолчанию, который в этом контейнере ОБЯЗАТЕЛЬНО
Будет ли вызов A.a () выполняться в транзакции? Инициируется ли транзакция при вводе A.a (), при вводе B.b (), при обращении к базе данных или в другое время?
Исходная ситуация: я не хочу, чтобы это выполнялось в транзакции, поэтому я могу использовать NOTSUPPORTED для Aa (), я думаю (? ), но я пытаюсь понять, как Вовлечение или не привлечение базы данных в разные точки стека вызовов влияет на транзакции.