基于这个例子:
@Service
public class Purchase {
@PersistenceContext
private EntityManager em;
@Autowired
private PurchaseDAO dao;
private String normalField;
.... // methods, operations, etc
}
如果我错了,请帮助纠正我:
谢谢!
答案 0 :(得分:8)
SpringSource forums: 我一直在寻找论坛上相同问题的答案......一般的共识似乎是,虽然每个JPA规范的EntityManager都不是线程安全的,但Spring通过其EntityManager代理注入的EntityManager可能是。
Hibernate: EntityManager是一种廉价的非线程安全对象,应该只使用一次,用于单个业务流程,单个工作单元,然后丢弃。除非需要,否则EntityManager将不会获取JDBC连接(或数据源),因此即使您不确定是否需要数据访问来提供特定请求,您也可以安全地打开和关闭EntityManager。 < / p>