关于DataManager和EntityManager的线程安全

在异步程序中,使用DataManager或EntityManager是线程安全的吗?可以和@Transactional注解结合使用吗?
在异步方法的多个线程中,dataManager或entityManager是否能保证上下文独立,事务管理正确?

例如,通过构造函数或@Autowired注入的dataManager

@Autowired
private DataManager dataManager;

@Async
@Transactional(propagation = Propagation.REQUIRES_NEW)
public UsercreateUser() {
    return dataManager.create(User.class)
}

或者,通过@PersistenceContext注入的EntityManager

@PersistenceContext
private EntityManager entityManager;

@Async
@Transactional
public Customer createCustomer() {
    Customer customer = metadata.create(Customer.class);
    customer.setName("Bob");
    entityManager.persist(customer);
    return customer;
}

是线程安全的,跟Transactional 一起用也没问题。如果需要在 UI 执行异步操作,请参考 异步任务 :: Jmix 文档 如果线程中没有用户的认证信息,可能还需要使用 系统认证

收到,多谢!