2010-01-10 1 views
1

Stuts2/Google Guice/JPA에 구축 된 Java 웹 응용 프로그램이 있습니다. JPA 공급 업체로서 최대 절전 모드를 사용합니다. Google의 App Engine에서 사용할 수 있도록 지원을 추가하고 싶습니다. 물론 쿼리와 매핑에 문제가 있습니다. Many-to-Many 및 조인은 지원되지 않습니다.Google App Engine 지원 추가 및 독립 실행 형 지원 유지

내 앱을 독립형으로 유지할 수있는 최상의 솔루션을 찾고 있습니다. 예를 들어, JPA 공급 업체가 지원하는 모든 데이터베이스의 Tomcat/Jetty 또는 공급 업체로서 datanucleus가 포함 된 Google App Engine을 사용하지 마십시오.

하나의 해결책은 내 독립형 구현에 JPA를 사용하고 Google App Engine에 JDO를 사용하는 것입니다. 분명히 이것은 JPA와 JDO 주석으로 내 모델 객체에 주석을 달고 DAO 레이어에 대한 다른 구현을 작성해야 할 것입니다.

다른 사람들이 시도한 다른 좋은 해결책이 있습니까?

답변

1

나는 당신의 접근 방식이 좋은 것이라고 생각합니다. 잘 디자인 된 아키텍처가 가장 좋은 방법이라고 생각합니다. 당신은 DAO 레이어에서 많은 차이를 볼 것입니다. 좋은 디자인은 DAO 인터페이스를 볼 것이고, 각각의 특정 모델 액세스는 그 인터페이스의 자체 구현을 가질 것이다. JpaMyObjectDAO, JpaGAEObjectDAO 등 또한 Siad와 마찬가지로 App Engine에는 엔티티 클래스를 선언 할 때 몇 가지 특별한 요구 사항이 있습니다. 어쩌면 App Engine이나 Hibernate와 같은 저장 체계를 따르는 다른 버전의 엔티티 클래스를 가질 수 있으며 상위 계층에 사용할 공통 DTO 표현을 사용할 수 있습니다.

+0

이미 DAO 인터페이스와 서비스 인터페이스를 잘 구분하고 있으므로 구현을 변경하는 것이 매우 쉽습니다. 그것이 내가해야 할 길을 찾는 것처럼 보입니다. 내 모델 개체 대신 DTO 개체를 사용하는 것에 대해 여전히 생각하고 있습니다. 지금은 모델 객체를 뷰 전체에서 사용합니다. – Ruggs

1

쿼리를 XML 구성으로 재배치 할 수 있습니다. 이 방법으로 하나의 구성에서 RDBMS에 대한 쿼리를, 다른 구성에서 BigTable에 대한 쿼리를 가질 수 있습니다.

또 다른 아이디어는 DataNucleus가 JPA 공급 업체이기도하다는 것입니다. GAE와 서블릿 컨테이너 모두에서 JPA 기본 공급 업체로 만들어 개발을 쉽게 할 수 있습니다. JPA 공급 업체는 종종 메타 데이터로 수행하는 작업간에 약간의 차이가 있으며 이로 인해 두통이 줄어들 수 있습니다.

+0

다자간 주석 처리는 어떻게해야할까요? – Ruggs

+0

GAE는 다 - 대 - 다 관계를 처리 할 수 ​​없습니다. 당신이 할 수있는 최선의 방법은 각 클래스의 키 컬렉션을 운반하고 DAO/Service 레이어의 컬렉션을 처리하는 것입니다. 속성 액세스 ('category.getContacts()'와 반대되는'Service.getContactByCategory (category)')가 아니라 DAO/서비스 계층을 통해서만 접근하는 것이 좋다면, DAO를 호출하여 호출 할 때 키를로드합니다. – Drew

+0

이것은 기존 응용 프로그램이며 사용자가 제안한 것과 같은 서비스를 사용하는 것이 옵션이 아닙니다. 어느 쪽이든 나는 다른 서비스 구현을해야 할 것입니다. 그래서 단순히 다른 XML 파일에 쿼리를 넣는 것 이상의 것이 될 것입니다. – Ruggs