anchor.diff:  data to a relational database, and have less important entries use an asynchronous CacheStore,
   or none at all, to favour performance over redundancy.
   
  -==== Caches creation and Configuration
  -
  -The Hibernate ORM property ``hibernate.ogm.datastore.create_database`` is now supported by the dialect.
  -When this property is enabled the dialect will create any missing caches on the remote Infinispan cluster.
  -
  -By default all caches created use the __OGM default configuration__:
  +[[infinispan-remote-cache-configuration]]
  +
  +==== Caches creation and configuration
  +
  +Hibernate OGM can create a cache on the remote Infinispan cluster if it doesn't exist.
  +You can enable this behavior by setting the property
  +``hibernate.ogm.datastore.create_database=true``.
  +
  +By default, the creation of a new cache is done using the following __default configuration__:
  +
  +.Hibernate OGM default configuration for new Infinispan caches
   ====
   [source, XML]
   ----
  -<infinispan><cache-container>
  -  <distributed-cache-configuration name="configuration">
  -     <locking striping="false" acquire-timeout="10000" concurrency-level="50" isolation="REPEATABLE_READ"/>
  -     <transaction locking="PESSIMISTIC" mode="%s" /> # <1>
  -     <expiration max-idle="-1" />
  -     <indexing index="NONE" />
  -     <state-transfer timeout="480000" await-initial-transfer="true" />
  -  </distributed-cache-configuration>
  -</cache-container></infinispan>"
  -----
  -<1> Transaction mode attribute will be filled with the value of the propery `hibernate.ogm.cache.transaction.mode`
  -====
  -
  -To apply a custom configuration to a newly created cache
  -we need a previously defined cache or an existing __cache configuration__ on the remote Infinispan server to use as templates.
  -
  -There are two alternative ways to apply a cache configuration to new caches:
  -
  -* Using the dialect property: ``hibernate.ogm.infinispan_remote.cache_configuration``
  -* Using the ``@CacheConfiguration`` annotation on Entity class
  -
  -The property is applied to all new caches, it means for all Entities. So property has a global scope.
  -
  -The annotations are applied to the new caches being used to store the respective Entities on which they are present,
  -so the approach using annotations is scoped to the entity.
  -
  -It is possible to use a mixed approach; when both the dialect property and annotations are used the annotation takes
  -precedence on the global property.
  +<infinispan>
  +  <cache-container>
  +    <distributed-cache-configuration name="configuration">
  +      <locking striping="false" acquire-timeout="10000" concurrency-level="50" isolation="REPEATABLE_READ"/>
  +      <transaction locking="PESSIMISTIC" mode="%s" /> # <1>
  +      <expiration max-idle="-1" />
  +      <indexing index="NONE" />
  +      <state-transfer timeout="480000" await-initial-transfer="true" />
  +    </distributed-cache-configuration>
  +  </cache-container>
  +</infinispan>
  +----
  +<1> Transaction mode attribute will be filled with the value of the property `hibernate.ogm.cache.transaction.mode`
  +====
  +
  +If a different default configuration is defined on the Infinispan server, it's possible to use
  +the property ``hibernate.ogm.datastore.cache_configuration`` to refer to it.
  +This means that Hibernate OGM will create new caches using the selected configuration.
  +
  +If some of your entities need a different configuration, you can use the annotation 
  +``@CacheConfiguration``. This annotation will override the behavior of the global property using
  +instead the configuration defined for the annotated entity.
  +
  +Note that Hibernate OGM will create the caches only if they don't exist already and it doesn't
  +update the configuration of existing caches.
   
   [IMPORTANT]
   ====
  -Any configuration being referred to when when creating new Caches need to be present on the remote Infinispan cluster,
  -or an exception will thrown.
  -====
  -
  -Let's suppose that we have two Entities: __NoAnnotationEntity__ and __CacheConfigurationEntity__:
  -
  +The cache configurations referred to by the annotation and the property must exist on
  +the Infinispan cluster. An exception will be thrown otherwise.
  +====
  +
  +Let's suppose we have two entities: __Sheep__ and __BlackSheep__:
  +
  +.Example of entities having different cache configurations
   ====
   [source, JAVA]
   ----
   import javax.persistence.Entity;
   import javax.persistence.Id;
   
  -@Entity # <1>
  -public class NoAnnotationEntity {
  +@Entity 
  +public class Sheep {
   
   	@Id
  -	private String id;
  +	String name;
  +
  +    // ...
   
   }
   ----
  +
   [source, JAVA]
   ----
   import javax.persistence.Entity;
  
positive.code: import org.hibernate.ogm.datastore.infinispanremote.options.cache.CacheConfiguration;
  
  @Entity
  @CacheConfiguration("transactional") # <2>
  public class CacheConfigurationEntity {
  
  	@Id
  	private String id;
  
  }
  ----
  <1> __NoAnnotationEntity__ Entity does not make use of `@CacheConfiguration` annotation
  <2> __CacheConfigurationEntity__ Entity declares instead to use a configuration, named __transactional__
  ====
  
  Bundled with a __persistence.xml__ such that:
  ====
  [source, XML]
  ----
  <?xml version="1.0"?>
  
negative.code: * If you need to run JPQL or HQL queries, add Hibernate Search on the classpath
    (<<ogm-query-using-hibernate-search>>)
  
  Note that, except when using [acronym]`JNDI`, Hibernate OGM will bootstrap Infinispan Embedded 
  in the same JVM and terminate it on shutdown of the Hibernate OGM factory.
  
  [CAUTION]
  ====
  Hibernate OGM will start Infinispan Embedded in automatic discovery.
  If you are using a clustered configuration, it might automatically join an existing
  Infinispan cluster on the network.
  ====
  
  [[ogm-infinispan-add-dependencies]]
  
  ==== Adding Infinispan dependencies
  
  You can add the Infinispan Embedded dialect to your project using the following Maven GAV: 
  
  [source, XML]
  [subs="verbatim,attributes"]
  