| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > Синхронизация таблицы из двух разных БД |
| Автор: Temdegon 11.6.2010, 16:57 |
| есть две базы данных db1 и db2, два persistanse-контекста, два EntityManager-a. Есть Энтити. В первой базе данные изменяются, и тогда нужно их обновить во второй базе. Как бы мне хотелось: из EM1 получил лист классов для каждого из них сделал merge в EM2. JPA сама разобралась что там к чему - сохранила новые энтити и обновила изменившиеся. На практике получается что когда делаю EM2.merge() для уже существующего в db2 объекта, то он вставляется еще раз, а не обновляется старая запись. Праймари кейи в db1 и db2 могут отличаться. equals и hashCode переопределены и праймари кей в них не учитывается. возможно ли это вообще? Может мне нужно как-то отделить primary key от id обьекта, ввести какой-то бизнес-айди обычным полем? Можно ввести поле lastUpdate и по нему определять изменилось ли поле, но это придется писать код для синхронизации самому, а хотелось бы что бы JPA сама этим занималась. Подскажите как быть |
| Автор: Alagert 16.6.2010, 00:24 |
| Посмотрите в сторону реплекации данных с одной БД на другую. ИМХО, это более верное решение в данной задаче. |
| Автор: Temdegon 16.6.2010, 02:37 | ||
Решил проблему
http://forum.vingrad.ru/forum/topic-302979.html Репликация тут не совсем подходит. Мне не нужно синхронизировать две базы полностью. Мне нужно реализовать возможность EnterpriceClient-приложению работать в автономно, в аварийном режиме, в случае если ЕЕ-сервер временно недоступен. Для этого придется делать локальную базу, и туда дублировать все необходимое для автономной работы. |