我正在開發一個項目,在這個項目中,我分離了EJB,使得它們只執行業務邏輯但不執行查詢。然後我也有執行查詢的DAO。對我來說,使用DAO的,我注入的DAO的EJB,並用註釋的方法@PostConstruct,我設置了EntityManager與EntityManager的在DAO在bean注入像波紋管:如何將注入statelesbean的實體管理器傳遞給dao而無需使用setter方法
public class ClazzDao implements ClazzDaoI{
private EntityManager em;
public void setEm(EntityManager em){
this.em = em;
}
public List<Entity> list(){
return em.createQuery("FROM Entity e").getResultList();
}
}
和EJB
@Stateless
public class ClazzBean implements ClazzBeanI{
@PersistenceContext
private EntityManager em;
@Inject
private ClazzDaoI clazzDao;
@PostConstruct
private void init(){
clazzDao.setEm(em);
}
public BigDecimal sendEmailToMembers(){
List<Entity> members = clazzDao.list();
//do some stuff with data like say send emails...
}
}
有沒有一種方法可以讓DAO使用EJB中注入的實體管理器,而無需將其設置在EJB的@PostConstruct中?
爲什麼不直接在實體管理器中注入實體管理器,而不是將其注入到服務中,而不應該使用它? –
我想使用注入到bean中的EntityManager,我也不想使用DAO作爲JavaBean。再次,如果我使用@PersistenceContext將它注入DAO,實體管理器在使用它時變爲空。 – bavon