Добавление поддержки Google App Engine и поддержка автономной поддержки - PullRequest
1 голос
/ 11 января 2010

У меня есть Java-приложение, созданное на Stuts2 / Google Guice / JPA. Он использует Hibernate в качестве поставщика JPA. Я хотел бы добавить поддержку, чтобы ее можно было использовать в Google App Engine. Конечно, я сталкиваюсь с проблемами с запросами и отображениями. Например, «многие ко многим» и объединения не поддерживаются.

Я пытаюсь найти лучшее решение для обеспечения автономной работы моего приложения. Например, грешить котом или молом в любой базе данных, которую поддерживает поставщик JPA, или в Google App Engine с источником данных в качестве поставщика.

Одним из решений, о котором я подумал, было бы использование JPA для моих автономных реализаций и JDO для Google App Engine. Очевидно, что это потребует от меня аннотирования объектов моей модели аннотациями JPA и JDO и написания другой реализации для уровня DAO.

Есть ли другие хорошие решения, которые пробовали другие?

Ответы [ 2 ]

1 голос
/ 11 января 2010

Я думаю, что ваш подход хорош. Я думаю, что хорошая архитектура дизайна - лучший подход. Скорее всего, вы увидите много различий в слое DAO. Хороший дизайн будет видеть интерфейс DAO, тогда каждая конкретная модель доступа будет иметь собственную реализацию этого интерфейса, например. JpaMyObjectDAO, JpaGAEObjectDAO и т. Д. Также как и у вас, у App Engine есть некоторые особые требования, когда речь идет об объявлении классов сущностей. Возможно, вы могли бы иметь разные версии классов сущностей (каждая из которых соответствует своей схеме хранения, например, App Engine или Hibernate), а затем иметь общее представление DTO для ваших верхних уровней.

1 голос
/ 11 января 2010

Вы можете переместить свои запросы в конфигурацию XML. Таким образом, вы можете иметь запросы для СУБД в одной конфигурации и ваши запросы для BigTable в другой конфигурации.

Другая идея заключается в том, что DataNucleus также является поставщиком JPA. Вероятно, вы могли бы облегчить свою разработку, сделав ее основным поставщиком JPA для GAE и своего контейнера сервлетов. У поставщиков JPA часто очень незначительные различия в том, что они делают со своими метаданными, и это может избавить вас от головной боли.

...