Использование JPA в качестве механизма кэширования?

#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 и т. Д., Но на самом деле было просто любопытно посмотреть, возможно ли это.