2
Я новичок в OpenJPA, и мне интересно, будет ли вызов собственного запроса обходить кеш первого уровня и перейти прямо к базе данных.Собственные запросы в JPA 2.0 обходят кеш первого уровня?
Я новичок в OpenJPA, и мне интересно, будет ли вызов собственного запроса обходить кеш первого уровня и перейти прямо к базе данных.Собственные запросы в JPA 2.0 обходят кеш первого уровня?
Собственный запрос может быть для любой таблицы в хранилище данных ... независимо от того, основан ли на основе сущности или нет. Кэш L1, в общем, не имеет ничего общего с этим процессом, за исключением случаев, когда ваш класс результатов для вашего запроса является Entity.
Итак, если я выполняю собственный запрос, где мой результат - это Entity, вы говорите, что в отношении кеша L1 он будет работать так же, как если бы я выполнял аналогичный запрос с использованием JPQL или CriteriaBuilder? – user1148956
EntityManager (совместимой) JPA-реализации должен возвращать только один Entity для определенного идентификатора (т. Е. Только один, управляемый этим EM в любое время), поэтому, если запрос возвращает Entity с некоторым id, а этот id уже кэширован то он должен вернуть кешированный объект. – DataNucleus
ОК - это имеет смысл. Таким образом, это звучит как в случае простого выбора, где return является Entity, не имеет значения, использую ли я Native SQL, JPQL или CriteriaBuilder. В таком случае, как это, есть какая-то польза от НЕ использования собственного SQL? – user1148956