2015-06-03 67 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