在异步程序中,使用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;
}