アプリケーションで Service/Dao レイヤーをセットアップする方法を見つけようとしています。私はそれを行う方法がすべて異なる数十のリソースを見つけ、ここにあるモデルに従うことにしました: How should EntityManager be used in a pretty decoupled service layer and data access layer?
このNPEの原因となっている何が欠けているのかわかりません。
使用法:
@Path("/helloworld")
public class MyController {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String TestRequest() {
Workflow workflow = new Workflow();
workflow.setName("test");
WorkflowService workflowService = new WorkflowService();
workflowService.save(workflow);
return "Workflow ID:";
}
}
私の道:
@Stateless
public class WorkflowDao {
@PersistenceContext(unitName = "unit")
private EntityManager entityManager;
public int save(Workflow workflow) {
entityManager.persist(workflow);
return workflow.getId();
}
}
私のサービス:
@Stateless
public class WorkflowService {
@EJB
WorkflowDao workflowDao;
public int save(Workflow workflow) {
int id = workflowDao.save(workflow); //throws NullPointerException because workflowDao is null
return id;
}
}
Java プロジェクトをセットアップするのはこれが初めてなので (以前は 1 つだけ作業し、Spring を使用していました)、これがひどく間違っているように見える場合は注意してください。