Как синхронизировать несколько клиентов с общей базой данных (JPA)? - PullRequest
0 голосов
/ 08 марта 2012

У меня есть очень важный вопрос об основной концепции, касающейся синхронизации нескольких клиентов, которые совместно используют общую базу данных:

Я планирую разработать распределенное приложение с использованием Java и JPA для постоянного хранения.Предполагается, что у меня есть центральная база данных, в которой размещены все корпоративные данные, и несколько клиентов подключаются к этой базе данных для запроса данных, каков наилучший подход для синхронизации отдельных клиентов (с помощью данных в базе данных)?1004 * Например, клиент A обновляет фамилию клиента, в то время как клиент B уже вошел в базу данных и получил свой контекст постоянства.Как я могу сообщить Клиенту B об изменениях свойств клиентов?

Есть ли в JPA возможность тестировать сущности в постоянном контексте на предмет изменений?Или мне нужна сетевая служба, подобная JMS, которая информирует всех активных клиентов о любых изменениях в базе данных?

Любые предложения приветствуются!Заранее спасибо ...

1 Ответ

1 голос
/ 08 марта 2012

Это зависит от того, хотите ли вы, чтобы поставщик JPA кэшировал данные или нет.Без кеширования не о чем беспокоиться, данные будут извлекаться из базы данных каждый раз.При кешировании вам понадобится какой-то распределенный кеш, чтобы гарантировать, что у клиентов нет устаревших данных.Вы не упомянули, каким провайдером JPA вы пользуетесь.Eclipselink содержит собственную реализацию распределенного кэша, но имейте в виду, что вам нужно включить его, установив CacheSessionCustomizer.По умолчанию Eclipselink будет кэшировать последние 100 сущностей, поэтому, если вы не включите распределенный кеш, вам гарантированно устареют данные.С Hibernate вы можете использовать что-то вроде ehcache, но я сам этим не пользовался, поэтому особо не могу это прокомментировать.

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