Я хотел бы иметь возможность вставлять модель данных, поддерживающую RichFaces 4 ExtendedDataTable, но для этого требуется, чтобы EntityManager выполнял свою работу. Конечно, запросы EntityManager должны знать класс, и я бы предпочел не передавать их в вызовы методов (в этом случае методы не вызывают мой код); в идеале это было бы в конструкторе.Метод создания CDI для модели данных
Что-то вроде этого:
public class DataModel<T> {
@Inject private EntityManager em;
private Class<T> entityClass;
public DataModel(Class<T> entityClass) {
this.entityClass = entityClass;
}
//Sample method - this class will handle much more complex queries
public T findEntity(String key) {
return em.find(entityClass, key);
}
Можно ли создать CDI @Producer, который может быть использован, чтобы придать этой DataModel в моих бэк-бобов? Я думал о создании Классификатора, так что вы можете сделать что-то вроде
@Inject @JType(value = MyEntity.class) DataModel<MyEntity> dataModel;
Но это казалось неуклюжим, и также требую моего @Producer назвать new()
- который я думаю, что не допущу EntityManager быть закачиваться в Модель данных. Кроме того, я не уверен, как вы должны требовать, чтобы квалификатор был добавлен разработчиком.
Или, может быть, есть лучший способ приблизиться к этому, и я что-то упустил?
Я бы с инстинктом кишки. Над применением шаблонов проектирования и структур не является хорошим дизайном, они являются инструментами для общения. –