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

    Fields
    Modifier and Type
    Field
    Description
    protected jakarta.persistence.EntityManager
     
  • Constructor Summary

    Constructors
    Constructor
    Description
    JpaMapStorage(KeycloakSession session, Class<RE> entityType, Class<M> modelType, jakarta.persistence.EntityManager em)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static void
    clearQueryCache(org.hibernate.Session session)
     
    create(E mapEntity)
    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 identifier key from the underlying store upon commit.
    long
    delete(QueryParameters<M> queryParameters)
    Instructs this transaction to remove values (identified by mcb 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
     
    protected E
    Use the cache within the session to ensure that there is only one instance per entity within the current session.
    read(String key)
    Provides possibility to lookup for values by a key 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
     
    protected abstract jakarta.persistence.criteria.Selection<? extends RE>
    selectCbConstruct(jakarta.persistence.criteria.CriteriaBuilder cb, jakarta.persistence.criteria.Root<RE> root)
     
    protected abstract void
     

    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

      protected abstract jakarta.persistence.criteria.Selection<? extends RE> selectCbConstruct(jakarta.persistence.criteria.CriteriaBuilder cb, jakarta.persistence.criteria.Root<RE> root)
    • setEntityVersion

      protected abstract void setEntityVersion(JpaRootEntity entity)
    • createJpaModelCriteriaBuilder

      protected abstract JpaModelCriteriaBuilder createJpaModelCriteriaBuilder()
    • mapToEntityDelegate

      protected abstract E mapToEntityDelegate(RE original)
    • mapToEntityDelegateUnique

      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.
    • create

      public E create(E mapEntity)
      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 interface MapStorage<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 as value.
    • read

      public E read(String key)
      Description copied from interface: MapStorage
      Provides possibility to lookup for values by a key 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. If V implements ExpirableEntity this method should not return entities that are expired. See ExpirableEntity JavaDoc for more details.
      Specified by:
      read in interface MapStorage<RE extends JpaRootEntity,E extends AbstractEntity>
      Parameters:
      key - identifier of a value
      Returns:
      a value associated with the given key
    • read

      public Stream<E> read(QueryParameters<M> queryParameters)
      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. If V implements ExpirableEntity this method should not return entities that are expired. See ExpirableEntity JavaDoc for more details.

      Specified by:
      read in interface MapStorage<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

      public long getCount(QueryParameters<M> queryParameters)
      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 interface MapStorage<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

      public boolean delete(String key)
      Description copied from interface: MapStorage
      Instructs this storage to delete a value associated with the identifier key from the underlying store upon commit.
      Specified by:
      delete in interface MapStorage<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

      protected void removeFromCache(String key)
    • delete

      public long delete(QueryParameters<M> queryParameters)
      Description copied from interface: MapStorage
      Instructs this transaction to remove values (identified by mcb filter) from the underlying store upon commit.
      Specified by:
      delete in interface MapStorage<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)