Безопасен ли этот Hibernate Idiom? - PullRequest
0 голосов
/ 08 октября 2019

Проблема

Мне необходимо убедиться, что при изменении группы объектов в потоке A их изменения обновляются в унисон в потоке B. Изменения также не должны блокировать Thread-A, поэтому объекты отсоединяются. Никакие изменения не вносятся в сущность в потоке-A, когда нить-B обновляет их.

Вопрос

Как лучше всего решить эту проблему? Если нет, то что? Это идиома в безопасности? Если да, то почему?

Код

Шаг 1 (Тема A): создание объекта и сохранение в коллекции

Collection<MyEntity> collection = ...;

MyEntity entity = new MyEntity();

entity.setValue(1);

collection.add(entity);

Шаг 2 (Поток B): сохранить объект, созданный в потоке A, затем отсоединить

Session session = ...; // assume initialized

Transaction transaction = ...; // assume initialized

transaction.being();

session.persist(entity);

transaction.commit();

session.detach(entity);

Шаг 3 (Поток-A): после обновления разрешитьобъект, который нужно изменить в Thread-A.

Шаг 4 (Thread-B): после внесения дополнительных изменений обновите Thread-B.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...