2014-09-22 3 views
1

В настоящее время у нас есть приложение на основе java, которое использует JPA через eclipselink против одного MS SQL-сервера, это работает на системе во внутренней сети. Это прекрасно работает.Кэш-память eclipselink JPA и репликация DB

Теперь нам нужно добавить второй экземпляр базы данных sql в DMZ со своим собственным приложением и JPA eclipselink. (Внешний доступ к подмножеству приложения)

В обоих приложениях должны отображаться одни и те же данные, а это означает, что мне придется выполнить некоторую репликацию между ними. MS SQL имеет систему репликации слияния, которая бы соответствовала нашим потребностям. Но здесь я борюсь с кешем JPA.

Когда данные напрямую изменяются репликацией db, как/когда я могу аннулировать локальный кеш jpa?

Или существует репликация на основе java/jpa/jdbc, доступная для таких настроек?

Любые другие идеи о том, как справиться с такой ситуацией?

кэш
+0

который JPA кэш? l1 (менеджер объектов) или l2 (EMF)? –

+0

EMF наверняка, но I1 тоже будет приятным, иначе мы потеряем обновления ... –

ответ

1

EMF L2 очищается с помощью

emf.getCache().evictAll() 
+0

Да, я знаю это, но как узнать, когда его называть, когда база данных выполняет репликацию ниже уровня Java Java ? –

+0

, что явно выходит за рамки JPA, и только вы знаете, когда выполняется репликация (или вызывается что-то через собственный запрос JDBC или JPA в вашей базе данных, чтобы узнать) –

Смежные вопросы