2014-01-21 1 views
0

Есть ли пример для приложения реального мира, когда вы можете отправить между 3 уровнями (уровень ui-business-persistance) одного и того же объекта? Например, для простоты пусть это будет сущностью.Всегда (глубокий) клон перед отправкой на другой уровень entites geting from entityManager?

Я имею в виду, если am getReference() из моего entityManager и отправил пользователю, и я позволю пользователю отредактировать его, создать его и не копировать в любой точке моего кода?

Есть ли какие-либо проблемы или какие-либо проблемы с информацией, если вы выберете эту опцию? Каков недостаток этой опции?

Я знаю, что было бы хорошо, если бы мы обернули объект, таким образом, мы можем приложить, пакет entites и может перемещать объект в одном объекте, может быть, responseItem, мы можем прикреплять другие атрибуты, такие как грязный флаг, но если я хочу сохранить простоту, возможно ли это? Или EntityManagers испортят все это? (я чувствую, что они будут и не могут обрабатывать, например, отсоединенные объекты должным образом, поэтому лучше инкапсулировать все сопротивление и уровень UI и глубоко скопировать их ....)

Спасибо любому ответу.

+0

Почему вы не можете просто em.find() вашу сущность и em.merge() позже, чтобы сохранить изменения, внесенные в пользовательский интерфейс? – scraatz

+0

потому что он не работает в данный момент! Клиенты видят другие измененные entites, entites не могут случайно объединиться (entityManager не видит различий между сохраняемым объектом и отдельным). И я только хочу найти, где активный флаг равен 1, поэтому необходим пользовательский запрос, это тоже немного изменит ситуацию. – czupe

ответ

0

Я нашел этот ответ в этой книге: Pro JPA 2 Mastering the Java™ Persistence API

Я думаю, что основная причина является одновременно нитью Входа в помещении для глубоких сущностей копии, ссылаясь на это:

Приложение не может получить доступ к предприятию непосредственно из несколько потоков , в то время как он управляется контекстом персистентности. Однако приложение может , чтобы разрешить доступ к объектам одновременно, когда они отсоединены. Если он решит это сделать, синхронизация должна быть , управляемой методами, закодированными на объекте. Параллельный объект доступ к состоянию не рекомендуется, поскольку модель объекта не поддается совместным шаблонам. Было бы предпочтительнее просто скопировать объект и передать скопированный объект в других потоков для доступа, а затем объединить любые изменения обратно в контекст настойчивости, когда они должны быть сохранены