我正在制作一个 Java EE 应用程序,只是为了使用我在阅读书中学到的知识。我制作了一个简单的实体和一个 DAO 对象,它们对该实体执行不同的操作,例如创建、更新等。然后在我的 EJB 中,我想使用这个 DAO 对象,以便以后可以将它公开给 JSF 等。
我在理解如何在应用程序的不同层中使用不同类的对象时遇到一些问题。如何让它们相互暴露?
我是否只是像在常规 Java SE 中那样做?具有不同类的属性并在我想要的类中实例化它们? (不,可能不是,我已经看到了@Inject 等的用法,但我一点都不明白。而且我也不会在我可以使用它的时候)
我会欣赏一些关于我们何时/如何使用不同注释以及我们如何连接不同层的文本,而不仅仅是一些显示它的代码。
如果有人有空闲时间,我会参加 Java 聊天 =)
最佳答案
您问的问题太笼统了。拿一些关于 Java EE 的好书(有很多)。为了更好地理解依赖注入(inject),我推荐官方 Weld documentation .然而,这里有一个典型示例旨在向您展示如何连接不同的 Java EE 层:
JPA 实体:
@Entity
public class Employee {
@Id
private Long id;
private String name;
//getters and setters
}
EJB bean:
@Stateless
public class EmployeeService {
//The entity manager will be injected automatically
@PersistenceContext
private EntityManager em;
public Employee findEmployeeById(Long id) {
return em.find(Employee.class, id);
}
}
JSF Controller (假设它是 CDI-bean):
@Named
@SessionScoped
public class EmployeeController implements Serializable {
//using CDI @Inject annotation empService will be initialized automatically
@Inject
private EmployeeService empService;
//this method can be called from .xhtml page
public String obtainEmployeeName(Long id) {
String empName = "";
Employee emp = empService.findEmployeeById(id);
if (emp != null) {
empName = emp.getName();
}
return empName;
}
}
xhtml 页面:
<h:outputText value="#{employeeController.obtainEmployeeName(3)}" />
更新 一些可能有帮助的书:
这些很受欢迎,覆盖面很广。
关于java - 如何连接我的 Java EE 应用程序中的各个部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7777379/