#java #caching #jakarta-ee #jpa
#java #кэширование #джакарта-ee #jpa
Вопрос:
Я новичок в JPA, поэтому простите этот вопрос, если это довольно стандартная функциональность, но можете ли вы использовать JPA без базы данных и в основном использовать его как кэш для хранения объектов в вашем приложении? Если да, то это стандартная практика?
Ответ №1:
Вы могли бы использовать JPA с базой данных в памяти, так что фактически это был бы просто кеш, да. Использование его «без базы данных» вообще потребует огромного объема работы для создания пользовательского поставщика JPA, который работает с любым вашим хранилищем. Если это действительно полная реализация JPA, в которой просто отсутствует «постоянная» часть, вы бы потратили месяцы, если не годы, просто изобретая колесо для реализации языка запросов в вашем кэше, отличном от RDBMS, и так далее.
Я не работал везде, но лично, конечно, не стал бы регистрировать такую настройку в разделе «стандартные методы». 🙂
Ответ №2:
JPA — это всего лишь API, реализованный несколькими крупными игроками, такими как Hibernate, EclipseLink и OpenJPA (так называемые поставщики сохраняемости). Все эти библиотеки реализуют объектно-реляционное отображение и ориентированы на базу данных.
Я не совсем понимаю вашу мотивацию, но вы можете:
- используйте базу данных в памяти, такую как H2, и любого поставщика сохраняемости
- используйте де-факто стандартные решения для кэширования, такие как EhCache или абстракция API JCache
- внедрите свой собственный поставщик сохраняемости, реализующий JPA. Самое страшное и худшее решение.
Комментарии:
1. Спасибо, это было определенно больше теоретически: «Можете ли вы ответить на этот вопрос?» Я знаю о EhCache и Memcache и т. Д., Но на самом деле было просто любопытно посмотреть, возможно ли это.