#spring-boot #hibernate #spring-data-jpa #microservices
Вопрос:
Я планирую использовать Spring Data JPA вместе с Spring Boot с сервером MySQL. Каковы проблемы, соображения и рекомендации при рассмотрении возможности запуска нескольких экземпляров приложений Spring Boot, подключающихся к базе данных.
Насколько я понимаю из своих знаний, Hibernate следует рассматривать, когда он полностью владеет базой данных, что хорошо в случае создания монолитных приложений, но в случае запуска нескольких экземпляров (микросервисов), как будет управлять каждый экземпляр, обновлять состояние. Пожалуйста, веди меня.
Ответ №1:
Режим гибернации можно использовать для микросервисов, когда ни в одной службе приложения не поддерживается локальное состояние. Состояние может использовать кэш второго уровня спящего режима. Если вы хотите использовать кэш второго уровня, убедитесь, что он централизован и доступен для всех служб приложения.
На самом деле это шаблон общей базы данных, и использование этого шаблона в архитектуре микросервисов абсолютно нормально. Это обсуждается в шаблонах архитектуры микросервисов https://microservices.io/patterns/data/shared-database.html
Комментарии:
1. Поскольку режим гибернации использует кэш первого уровня, вызовет ли это какие-либо проблемы, если другой экземпляр обновит базу данных до того, как изменения кэша первого уровня будут сброшены в базу данных.
2. Кэш первого уровня или сеанса ограничен уровнем транзакции. В случае, если двум разным службам необходимо обновить одну и ту же запись, рекомендуется загрузить запись с явной блокировкой. Это заставило бы второго абонента ждать, пока не завершится первый. Эта ссылка содержит подробные сведения об управлении параллелизмом baeldung.com/jpa-pessimistic-locking
Ответ №2:
Hibernate
является JPA
реализацией и Spring Data JPA
представляет собой абстракцию доступа к данным JPA. Hibernate
обеспечивает эталонную реализацию Java Persistence API
, что делает его отличным выбором в качестве инструмента ORM с преимуществами слабой связи…
вещи не меняются в Spring Data JPA
сравнении Hibernate
. Spring Data JPA
у вас есть собственный метод для простой работы с Crud JpaRepository
,но вы можете запустить запрос для сложной работы в реляционной базе данных(mysql,postgresql, azure…и т. Д.) и собственной базе данных jpa JPQL
…