나는 봄, 최대 절전 모드, 메이븐, jpa, springMVC로 큰 응용 프로그램을 시작합니다. 현재 30 개의 수업이 있습니다. (우리는 60 클래스가 각 클래스에 대한 인터페이스) 나는 두 개의 패키지가 있습니다. (DAO 및 서비스) DAO의 경우 genericDao 클래스를 사용합니다. 모든 다오에 대한 나의 CLASSE 개요는 다음과 같습니다일반 클래스 (dao, service)로 CRUD
>
package org.me.dao.jpageneric;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import org.apache.log4j.Logger;
public abstract class GenericDAO<T, K> {
@PersistenceContext(unitName="database")
protected EntityManager em;
protected Logger logger=Logger.getLogger(getClass());
public abstract Query getByIdQuery(K id);
public abstract Query getAllQuery();
public T save(T saved) {
if (saved == null) {
throw new IllegalArgumentException("L'argument de save() ne doit pas être nul.");
}
return (T) em.merge(saved);
} // save()
public void delete(T deleted) {
if (deleted == null) {
throw new IllegalArgumentException("L'argument de delete() ne doit pas être nul.");
}
em.remove(deleted);
} // delete().
@SuppressWarnings("unchecked")
public T get(K id) {
if (id == null) {
throw new IllegalArgumentException("L'argument de get() ne doit pas être nul.");
}
Query query = getByIdQuery(id);
return (T) query.getSingleResult();
}
@SuppressWarnings("unchecked")
public List<T> getAll() {
logger.debug("Récupération de tous les objets");
Query query = getAllQuery();
return (List<T>) query.getResultList();
}
모든 다오 반드시이 CLASSE를 확장하고 자신의 인터페이스를 implemente (그리고 난 30 다른 클래스에 대해이 작업을 확인해야합니다). 좋은 연습이되기를 바랍니다.
이후에는 서비스 클래스에 대한 또 다른 추상 제네릭 클래스가 있습니다.
package org.me.service.generic;
import java.util.List;
public abstract class GenericService<T,K> {
public abstract T create(T saved);
public abstract void remove(T deleted);
public abstract T findById(K id) ;
public abstract List<T> findAll();
}
모든 서비스 클래스는 이러한 일반적인 서비스 클래스를 확장하고 각 클래스의 인터페이스를 구현해야합니다. 좋은 연습이 다시 있습니까?
나는 각 클래스 (패키지 DAO 및 서비스)에 대한 인터페이스를 가지고 있습니다.
또 다른 질문 : 나는 컨트롤러를 만들어야 만합니까? 각 클래스에 대한 컨트롤러를 생성하려면 (예 : 30 개의 컨트롤러를 말합니까?) 페이지 HTML 및 JSP를 사용하는 방법은 무엇입니까? 감사합니다. . 는 그리고 미안 내 영어는
서비스 및 컨트롤러는 응용 프로그램의 유스 케이스를 구현해야합니다. 임의의 create, remove 및 find 메소드를 포함해서는 안됩니다. 은행 애플리케이션을 구현한다고 가정 해 보겠습니다. 당신은 정말로 모든 계좌 (수백만이 될 수 있음) 또는 모든 고객을 나열하고 싶지 않습니까? 또한 JPA는 EntityManager.find()를 사용하여 ID로 엔티티를 가져옵니다. 그 대신 쿼리를 사용하십시오. 해당 정보에 대해서는 –
입니다. 나는 네가 한 말을 바꿨다! 더 쉽고 매우 유용합니다. 내 신청서는 대사관, 여행사 및 외무부를위한 것입니다. 알고 계신대로 –