Как использовать другую реализацию для кеша уровня 2 JPA 2? - PullRequest
2 голосов
/ 18 июля 2011

Мы хотели бы использовать другой кэш L2 для нашего большого приложения JPA.Мы пытаемся добиться общего кэша между несколькими серверами.

Мы используем Eclipselink в качестве реализации JPA, а некоторые устаревшие коды используют внутренние API-интерфейсы Eclipselink, поэтому переключение не вариант.

Coherence / ToplinkСетка кажется слишком дорогой (4000 $ / процессор?).

Есть ли способ подключить другую реализацию кеша?Что-то указано в JPA 2 (я не могу найти ничего в спецификации, но, может быть, я просто неправильно понял)?Проприетарные (= специфичные для Eclipselink) решения в порядке, если они несколько документированы или достаточно просты (мы не хотим, чтобы это сломалось).

Ответы [ 3 ]

1 голос
/ 18 июля 2011

JPA не определяет подключаемый интерфейс кеша. Я не знаю, будет ли это когда-нибудь, но если это произойдет, я держу пари, что этого не произойдет, пока воскрешенный JSR-107 не определит стандартный API для объектных кешей, который JPA затем быть в состоянии использовать. Возможно, также придется подождать JSR 347 , который определяет другой интерфейс кеша, чье отношение к JCache несколько неясно (существует открытая фракционная война между и внутри групп, с некоторыми членами 107 экспертной группы пытается объявить 347 независимой республикой и вторгнуться в Мексику).

Итак, до тех пор вы зависите от интерфейса кеша вашего провайдера. Я не эксперт по EclipseLink, но в прошлый раз, когда я смотрел, я не мог видеть подключаемый интерфейс кэша второго уровня. На самом деле, я думаю, что только Hibernate и, конечно, DataNucleus, имеют их.

1 голос
/ 18 июля 2011

Большинство реализаций кеша не распределены (кроме Coherence), только локальные.EclipseLink уже поддерживает кэш общего доступа и координацию кэширования для кэширования в кластере.

Какой кэш вы собираетесь использовать и какую выгоду вы намереваетесь получить от него?

EclipseLink поддерживает интеграциюдля сторонних кешей этот API был создан для интеграции Coherence, хотя Coherence является единственным кешем, который в настоящее время обеспечивает интеграцию.

1 голос
/ 18 июля 2011

Есть ли способ подключить другую реализацию кеша?

Вы исследовали использование общего кэша объектов EclipseLink , который поставляется с EclipseLink? Следуя описанию, кэш общих объектов не ограничивается одним EntityManager и доступен в течение жизненного цикла нескольких менеджеров Entity, то есть в нескольких транзакциях. Разумеется, он ограничен жизненным циклом EntityManagerFactory, который может быть действующим до тех пор, пока приложение работает в контейнере.

Кэш общих объектов EclipseLink отличается от Oracle Coherence, и я считаю, что он не лицензируется и не упаковывается отдельно, что делает его доступным для всех контейнеров.

...