2015-06-03 97 views
1

我想知道哪種方式是最好的定義實體經理。我使用的春天開機實體經理最佳實踐

情況1)春季服務類創建類似如下

@Service 
@Transactional 
public class DemoService { 

    private static final Logger log = LoggerFactory.getLogger(DemoService.class); 

    private EntityManagerFactory emf; 

    public void getEntity(){ 
     final EntityManager em = emf.createEntityManager(); 
    } 

    @PersistenceUnit 
    public void setEntityManagerFactory(final EntityManagerFactory emf) { 
     this.emf = emf; 
    } 

} 

病例2)定義一個全局的實體管理器,並在所有的服務共享。

注意:每個服務只反映一個單一的實體定義。

+1

1.否,2.否。只需在'@ PersistenceContext'中添加一個'EntityManager'類型的字段,然後完成它。 –

+0

非常感謝@ M.Deinum。 –

回答

0

注入的EntityManager是最簡單,做最有效的方法:

@PersistenceContext(unitName = "persistenceUnit") 
private EntityManager entityManager; 
  • 你並不需要設置EntityManagerFactory,因爲你需要與事務綁定EntityManager
  • 您不需要將EntityManager保存在全局組件中,因爲這將是另一個間接層,您可以簡單地嘲笑EntityManager