Class JpaMapStorage<RE extends JpaRootEntity,E extends AbstractEntity,M>
java.lang.Object
org.keycloak.models.map.storage.jpa.JpaMapStorage<RE,E,M>
- All Implemented Interfaces:
MapStorage<E,
M>
- Direct Known Subclasses:
JpaAdminEventMapStorage
,JpaAuthEventMapStorage
,JpaClientMapStorage
,JpaClientScopeMapStorage
,JpaGroupMapStorage
,JpaLockMapStorage
,JpaPermissionMapStorage
,JpaPolicyMapStorage
,JpaRealmMapStorage
,JpaResourceMapStorage
,JpaResourceServerMapStorage
,JpaRoleMapStorage
,JpaRootAuthenticationSessionMapStorage
,JpaScopeMapStorage
,JpaSingleUseObjectMapStorage
,JpaUserLoginFailureMapStorage
,JpaUserMapStorage
,JpaUserSessionMapStorage
public abstract class JpaMapStorage<RE extends JpaRootEntity,E extends AbstractEntity,M>
extends Object
implements MapStorage<E,M>
-
Field Summary
-
Constructor Summary
ConstructorDescriptionJpaMapStorage
(KeycloakSession session, Class<RE> entityType, Class<M> modelType, jakarta.persistence.EntityManager em) -
Method Summary
Modifier and TypeMethodDescriptionstatic void
clearQueryCache
(org.hibernate.Session session) Instructs this storage to add a new value into the underlying store on commit in the context of the current transaction.protected abstract JpaModelCriteriaBuilder
boolean
Instructs this storage to delete a value associated with the identifierkey
from the underlying store upon commit.long
delete
(QueryParameters<M> queryParameters) Instructs this transaction to remove values (identified bymcb
filter) from the underlying store upon commit.long
getCount
(QueryParameters<M> queryParameters) Returns a number of values present in the underlying storage that fulfill the given criteria with respect to changes done in the current transaction.protected abstract E
mapToEntityDelegate
(RE original) protected E
mapToEntityDelegateUnique
(RE original) Use the cache within the session to ensure that there is only one instance per entity within the current session.Provides possibility to lookup for values by akey
in the underlying store with respect to changes done in current transaction.read
(QueryParameters<M> queryParameters) Returns a stream of values from underlying storage that are updated based on the current transaction changes; i.e.protected void
removeFromCache
(String key) protected abstract jakarta.persistence.criteria.Selection<? extends RE>
selectCbConstruct
(jakarta.persistence.criteria.CriteriaBuilder cb, jakarta.persistence.criteria.Root<RE> root) protected abstract void
setEntityVersion
(JpaRootEntity entity) Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.keycloak.models.map.storage.MapStorage
exists, exists
-
Field Details
-
em
protected jakarta.persistence.EntityManager em
-
-
Constructor Details
-
JpaMapStorage
public JpaMapStorage(KeycloakSession session, Class<RE> entityType, Class<M> modelType, jakarta.persistence.EntityManager em)
-
-
Method Details
-
selectCbConstruct
-
setEntityVersion
-
createJpaModelCriteriaBuilder
-
mapToEntityDelegate
-
mapToEntityDelegateUnique
Use the cache within the session to ensure that there is only one instance per entity within the current session. -
create
Description copied from interface:MapStorage
Instructs this storage to add a new value into the underlying store on commit in the context of the current transaction.Updates to the returned instances of
V
would be visible in the current transaction and will propagate into the underlying store upon commit. The ID of the entity passed in the parameter might change to a different value in the returned value if the underlying storage decided this was necessary. If the ID of the entity was null before, it will be set on the returned value.- Specified by:
create
in interfaceMapStorage<RE extends JpaRootEntity,
E extends AbstractEntity> - Parameters:
mapEntity
- the value- Returns:
- Entity representing the
value
in the store. It may or may not be the same instance asvalue
.
-
read
Description copied from interface:MapStorage
Provides possibility to lookup for values by akey
in the underlying store with respect to changes done in current transaction. Updates to the returned instance would be visible in the current transaction and will propagate into the underlying store upon commit. IfV
implementsExpirableEntity
this method should not return entities that are expired. SeeExpirableEntity
JavaDoc for more details.- Specified by:
read
in interfaceMapStorage<RE extends JpaRootEntity,
E extends AbstractEntity> - Parameters:
key
- identifier of a value- Returns:
- a value associated with the given
key
-
read
Description copied from interface:MapStorage
Returns a stream of values from underlying storage that are updated based on the current transaction changes; i.e. the result contains updates and excludes of records that have been created, updated or deleted in this transaction by respective methods of this interface.Updates to the returned instances of
V
would be visible in the current transaction and will propagate into the underlying store upon commit. IfV
implementsExpirableEntity
this method should not return entities that are expired. SeeExpirableEntity
JavaDoc for more details.- Specified by:
read
in interfaceMapStorage<RE extends JpaRootEntity,
E extends AbstractEntity> - Parameters:
queryParameters
- parameters for the query like firstResult, maxResult, requested ordering, etc.- Returns:
- values that fulfill the given criteria, that are updated based on changes in the current transaction
-
clearQueryCache
public static void clearQueryCache(org.hibernate.Session session) -
getCount
Description copied from interface:MapStorage
Returns a number of values present in the underlying storage that fulfill the given criteria with respect to changes done in the current transaction.- Specified by:
getCount
in interfaceMapStorage<RE extends JpaRootEntity,
E extends AbstractEntity> - Parameters:
queryParameters
- parameters for the query like firstResult, maxResult, requested ordering, etc.- Returns:
- number of values present in the storage that fulfill the given criteria
-
delete
Description copied from interface:MapStorage
Instructs this storage to delete a value associated with the identifierkey
from the underlying store upon commit.- Specified by:
delete
in interfaceMapStorage<RE extends JpaRootEntity,
E extends AbstractEntity> - Parameters:
key
- identifier of a value- Returns:
- Returns
true
if the object has been deleted or result cannot be determined,false
otherwise.
-
removeFromCache
-
delete
Description copied from interface:MapStorage
Instructs this transaction to remove values (identified bymcb
filter) from the underlying store upon commit.- Specified by:
delete
in interfaceMapStorage<RE extends JpaRootEntity,
E extends AbstractEntity> - Parameters:
queryParameters
- parameters for the query like firstResult, maxResult, requested ordering, etc.- Returns:
- number of removed objects (might return
-1
if not supported)
-