Я не очень хорошо знаком с JPA, но у меня есть такой сценарий: я хотел бы использовать одни и те же классы (читайте «код») как на сервере, так и на клиенте (Java SE) по причинам KISS / DRY. Мне кажется, что один из возможных способов сделать это - иметь (особый?) EntityManager
на клиенте, который передает запросы на объекты на сервер и в конце передает все объекты обратно на сервер для "пакетного сохранения действия" где классы могут (повторно) проверять свои данные, применять некоторые транзакционные операции (обновление и прочее), и все они хорошо сохраняются реализацией JPA.
Вопрос в том, возможно ли это? Как? (есть ли уже решение для этого? Это своего рода просто решить эту проблему с помощью "некоторого" кода?)
Изменить: Хорошо, позвольте мне уточнить пару вещей для всех. Мой опыт работы с собственной разработанной платформой приложений, которая использует то, что можно было бы назвать универсальными службами сохранения; то есть службы для выполнения действий CRUD (одна служба на действие для любой таблицы) в рамках одной транзакции, но поддерживаются классами (внутри службы), которые перехватывают эти действия и предлагают проверку и (часто) сложные бизнес-правила (с обновлениями для других таблиц, так далее.). Это было реализовано в более старых продуктах Microsoft. Сейчас происходит переход на .NET, где недавно появились аналогично работающие, но более продвинутые фреймворки, такие как DevForce и CSLA. DevForce, в частности, предлагает то, что я хотел бы сделать и на Java (см. Параграфы «Выполнение на клиенте» в эту страницу, а затем перейдите на эту страницу для лучшего обзора).
Мой более старый вопрос по этой общей теме: Java-эквивалент CSLA