Как соединить различные части в моем приложении Java EE - PullRequest
1 голос
/ 15 октября 2011

Я делаю приложение Java EE только для того, чтобы использовать то, что я изучаю, читая книги.Я создал простую сущность и объект DAO, которые выполняют различные действия над этой сущностью, такие как создание, обновление и т. Д. Затем в моем EJB-компоненте я хочу использовать этот объект DAO, чтобы позже я мог представить его JSF и т. Д.

У меня небольшие проблемы с пониманием того, как использовать объекты разных классов на разных уровнях моего приложения.Как мне выставить их друг другу?

Должен ли я просто сделать, как в обычном Java SE?Есть свойства для разных классов и создавать их экземпляры в классах, которые я хочу?(Нет, вероятно, нет, я видел использование @Inject и т. Д., Но я не понимаю ни капли из этого. И не тогда, когда я тоже могу его использовать)

Я бы оценил некоторый текст о том, когда /как мы используем разные аннотации и как мы соединяем разные слои, а не просто код, показывающий это.

Я в чате Java, если у кого-то есть свободное время =)

1 Ответ

5 голосов
/ 15 октября 2011

Вы задаете слишком общие вопросы. Возьмите приличную книгу по Java EE (их много). Для лучшего понимания внедрения зависимостей, я бы рекомендовал официальную документацию Weld . Однако вот типичный пример, предназначенный для того, чтобы показать вам, как соединить различные уровни Java EE:

JPA Entity :

@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-контроллер (предположим, это CDI-компонент):

@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 page :

<h:outputText value="#{employeeController.obtainEmployeeName(3)}" />

Обновление Некоторые книги, которые могут помочь:

Pro JPA 2: освоение API персистентности Java Core JavaServer Faces (3-е издание) Начало Java EE 6 с GlassFish 3

Они довольно популярны и занимают много места.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...