JPA에서 엔티티는 주석이 붙은 Plain Old Java Objects입니다. 그러나 저는 그들과 데이터베이스와 상호 작용할 수있는 좋은 방법을 찾지 못했습니다.Java 용 쿼리 "레이어"에 적합한 디자인 JPA
내 현재 응용 프로그램에서 내 기본 디자인은 항상 기본 키로 시퀀스 기반 ID를 갖기 때문에 대개 PK가 아닌 다른 속성으로 엔티티를 조회해야합니다.
난 정말이를 가진 싫어 :
그리고 각 엔티티에 대한
나는 모든/** * @return A List of all MyEnts that have some property * @param someProp some property */ public List<MyEnt> getAllMyEntsFromProp(final String someProp) { try { final Query query = entityManager.createQuery("select me from MyEnt me where me.someProp = :someProp"); query.setParameter("someProp", someProp); return query.getResultList(); } catch(final NoResultException nre) { log.warn("No MyEnts found"); } return new ArrayList<MyEnt>(); }
그래서 몇 가지 변화에게 있습니다 쿼리 방법과
@Stateless public class MyEntApiBean implements MyEntApi { @PersistenceContext(unitName = "xxx") @Inject EntityManager entityManager;
의 무 EJB를 EJB의 메소드는 엔티티 자체에 속하는 것으로 보이고 EJB 로컬 인터페이스는 nnoy 내 쓰레기.
각 메소드에서 "try, createQuery, getResultList, catch, log, return"(대부분 클로저가 없거나 Java에서 "statement"또는 somesuch의 결과)과 중복되는 것을 싫어합니다.
내 문제 중 하나 또는 둘 모두를 해결하는 엔티티와 데이터베이스와 상호 작용하는 더 좋은 방법에 대한 제안이있는 사람이 있습니까?
현재 제네릭과 리플렉션을 사용하여 일부 기본 메서드를 사용하여 중복을 줄이기위한 일반적인 쿼리 메서드 (문제 2)를 생각하고 있습니다 (나중에 검토를 위해 프로토 타입을 작성합니다).
감사합니다, 앤더스