Можно ли сделать что-то подобное с CDI?
@Named
@ApplicationScoped
public class DAO {
@PersistenceContext
private EntityManager entityManager;
}
Я понимаю, что EntityManager
сам по себе не является потокобезопасным и поэтому не должен использоваться в глобальном глобальном контексте, таком как @ApplicationScoped
. Однако, поскольку введенный объект с @PersistenceContext
на самом деле является обертки, ориентированной на поток, вокруг базового EntityManager
, делает ли это это нормально?
Я видел другие сообщения по этому вопросу, но не смог найти авторитетный ответ для этого конкретного случая. Например:
Java CDI @PersistenceContext и безопасность потоков
Похоже, что он безопасен для использования с @Stateless
, например, но я не уверен, работает ли это из-за способа @Stateless
или из-за чего-то собственного @PersistenceContext
.
ИЗМЕНИТЬ
Источником моей путаницы является то, что обертка @PersistenceContext
, введенная EntityManager
, кажется, знает о текущем потоке, чтобы выяснить, есть ли уже транзакция. Поэтому, возможно, я путаю нить-осведомленность с безопасностью потоков, и это две разные вещи.