|
|
|
Hibernate: два источника данных в одном контексте
|
|||
|---|---|---|---|
|
#18+
Доброго утра всем! Никогда раньше такого не делал и не могу понять где рыть землю. Есть две БД PostgreSQL: master и slave. Структуры полностью идентичны. Базы располагаются на разных серверах и не в локальной сети. Надо сделать программную перекачку данных из таблицы на master в аналогичную таблицу на slave. Используется Spring+Hibernate. В одном контексте описаны два источника (соотв.для master и slave): Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. Собственно, сама реализация (там всего три метода): Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. Пытаюсь загрузить контекст Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. и получаю "бяку": Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. Буду признателен за подсказку - где косяк и куда смотреть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2018, 08:24 |
|
||
|
Hibernate: два источника данных в одном контексте
|
|||
|---|---|---|---|
|
#18+
fplab, Куда вы только хибер не суете. Код: java 1. Иди на форум базы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2018, 08:59 |
|
||
|
Hibernate: два источника данных в одном контексте
|
|||
|---|---|---|---|
|
#18+
Petro123, Спасибо, но увы :( Об этом способе я, конечно, извещен :) Нужен программный способ. Данные постоянно льются в master. Таблицу в slave надо постоянно пополнять данными, пришедшими в master. Такие утилиты как slony не подходят (во всяком случае у меня нет возможности его установить и настроить). Так что остается только программный способ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2018, 09:12 |
|
||
|
Hibernate: два источника данных в одном контексте
|
|||
|---|---|---|---|
|
#18+
fplab, Ты так обосновал, как будто все прогеры на ветке субд делают через хибер. Я просто сомневаюсь, что ОРМ умеет держать сессию и маппить на две удаленные базы. DBLink еще есть. Все юзают кроме тебя как белой вороны. Imho ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2018, 10:09 |
|
||
|
Hibernate: два источника данных в одном контексте
|
|||
|---|---|---|---|
|
#18+
fplabтолько программный способ JDBC можно поискать и взять сразу строку-запись чтобы вставить в JDBC2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2018, 10:11 |
|
||
|
Hibernate: два источника данных в одном контексте
|
|||
|---|---|---|---|
|
#18+
fplabНадо сделать программную перекачку данных из таблицы на master в аналогичную таблицу на slave. Если вы собрались это делать на Hibernate, то это как на камазе ездить в магазин за продуктами. ORM для этого совершенно не приспособлен и не предназначен. При этом задача является инфраструктурной. Но вы зачем-то мешаете её в свою бизнес-логику. Прежде чем приступать к реализации, стоит обдумать как это вообще всё должно работать - Как обрабатывать транзакцию и ошибки? - Как бороться с дикими блокирующими задержками связанным с удаленностью БД? - Как синхронизировать генерируемые значения? - Как обрабатывать ситуации когда нужно "руками" накатывать исправление в БД? - Почему базы две а Java сервер один? И много всего такого. За 15 лет я видел не мало попыток написать репликацию БД на коленке, но при этом ни одна из них не была успешной. Единственным относительно рабочим решением была репликация целиком запросов к сервисам и асинхронное выполение целых бизнес-транзакций на отдельных серверах. Но там была своя специфика репликации данных между офисами. А мы даже не знаем с какой целью вы делаете то что делаете. И, да, вам точно в другую ветку форума. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2018, 10:30 |
|
||
|
Hibernate: два источника данных в одном контексте
|
|||
|---|---|---|---|
|
#18+
Petro123DBLink еще есть. Все юзают кроме тебя как белой вороны. Лучше FDW, на него даже hibernate можно натянуть, т.к. выглядить это будет как еще одна схема с такой же структурой как в локальной БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2018, 10:33 |
|
||
|
Hibernate: два источника данных в одном контексте
|
|||
|---|---|---|---|
|
#18+
Локшин Маркдаже hibernate можно натянуть,если цель натянуть, сову на глобус, то не ко мне. Я и в sql тоже комфортно работаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2018, 11:31 |
|
||
|
Hibernate: два источника данных в одном контексте
|
|||
|---|---|---|---|
|
#18+
fplab, Версия Java какая? :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2018, 16:04 |
|
||
|
Hibernate: два источника данных в одном контексте
|
|||
|---|---|---|---|
|
#18+
Petro123fplab, Ты так обосновал, как будто все прогеры на ветке субд делают через хибер. Я просто сомневаюсь, что ОРМ умеет держать сессию и маппить на две удаленные базы. DBLink еще есть. Все юзают кроме тебя как белой вороны. Imho Я ничего не обосновывал. Есть задача. Глуповатая согласен, но ее надо решать. И именно программным способом, увы. Заказчик далеко, согласовать что-либо - тяжко. Время идет. А данные в slave нужны (с ними работает другая группа разработчиков). На самом деле не я один столкнулся с такой задачей (например, см. тут или и тут , а также довольно много других). Сделал и спасибо всем (хотя и совсем не так, как в приведенных ссылках). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2018, 16:05 |
|
||
|
Hibernate: два источника данных в одном контексте
|
|||
|---|---|---|---|
|
#18+
mad_nazgul, 1.8 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.05.2018, 16:06 |
|
||
|
Hibernate: два источника данных в одном контексте
|
|||
|---|---|---|---|
|
#18+
fplabmad_nazgul, 1.8 Тады ОЙ. Я делал что-то подобное, но на spring-boot, Java 1.8. Настройку EntityManager делал в классах конфигурации. Например ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2018, 11:00 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39645980&tid=2122047]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
155ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
| others: | 12ms |
| total: | 267ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...