Полагаю, я начну с
Вопрос
Есть ли способ обеспечить сброс в базу данных только тех объектов, которые были явно «помечены» каким-либо образом?
Среда
Мы используем Java EE 5, Seam 2, JBoss AS 6 и Hibernate (хотя мы пытаемся сохранить прямые зависимости Hibernate минимальными).
Цель
В настоящее время у нас есть сущности, которые отображаются на временные объекты DTO, которые затем используются на бизнес-уровне и привязываются к фасетам для представления.Когда нам нужно сохранить данные, мы сопоставляем DTO с сущностями и сохраняем их.Я хотел бы заменить DTO бизнес-объектом-оболочкой, который оборачивает сущность так, чтобы:
- Сопоставление не требуется, поскольку бизнес-объект будет вызывать методы получения и установки для обернутой сущности вместо сохранения еесобственная копия данных.
- При создании бизнес-объекта могут быть указаны подсказки, но если что-то не получено, то оно может быть автоматически извлечено позже, как указано в JPA.Это моя любимая мозоль.Ненавижу каждый раз, когда мне это нужно, извлекать что-то лишнее.Это часто приводит к чрезмерно сложному «деловому» коду, особенно когда имеется много данных, и это слишком медленно, чтобы получить все это заранее.Когда я звоню
getRelatedStuff()
, он должен просто быть там . - Сохранение так же просто, как «маркировка» соответствующего бизнес-объекта (-ов) и вызов сброса (я думал об использовании * 1023).* Транспортировка шва в транзакциях с ручным сбросом ).
Проблема
Проблема с этим шаблоном заключается в том, что JPA хочет и хочет сбросить все в базу данных во время сброса.Я бы лучше сказал JPA, какие сущности я хочу очистить.Все, что я не указал, не должно сбрасываться.
В качестве дополнительного вопроса, является ли этот шаблон хорошей идеей?