Spring Boot - избегайте получения одного и того же DAO несколько раз - PullRequest
0 голосов
/ 17 апреля 2020

Во время написания сложного веб-приложения мы поняли, что часто получаем один и тот же DAO во время вызова API. Это может произойти из-за того, что приложение имеет несколько слоев. Мы хотели бы избежать получения одного и того же объекта из базы данных несколько раз за один запрос. Единственное решение, которое можно использовать, - это контекст потока. Мы можем кешировать там уже запрошенные сущности из базы данных, и во 2-й раз, когда система запросит то же самое, он будет возвращен из контекста потока вместо базы данных. Это может работать, но все мы знаем, что это может быть не лучшим вариантом, в то время как приложение может иметь фоновые потоки, где такое кэширование не будет хорошей практикой.

(мы используем MongoDB, если это важно)

Если вы знаете какое-либо другое решение этой проблемы, пожалуйста, дайте мне знать :)

Ответы [ 2 ]

0 голосов
/ 17 апреля 2020

Изучите нотацию @Cachable и либо используйте кэш по умолчанию, либо вы можете реализовать любое из нескольких решений для кеширования, поддерживаемых Spring.

https://docs.spring.io/spring/docs/4.1.x/spring-framework-reference/html/cache.html

0 голосов
/ 17 апреля 2020

Вам нужно что-то вроде кэширования на уровне доступа к данным, возможно, шаблон в стороне от кэша - я использовал ehcache для этой цели. Это дает вам протестированную, настраиваемую библиотеку без использования ThreadLocal et c.

Эта тема похожа на формулировку проблемы на ваш пост - взгляните на некоторые ответы там.

...