<!--
  ~ Licensed to the Apache Software Foundation (ASF) under one
  ~ or more contributor license agreements.  See the NOTICE file
  ~ distributed with this work for additional information
  ~ regarding copyright ownership.  The ASF licenses this file
  ~ to you under the Apache License, Version 2.0 (the
  ~ "License"); you may not use this file except in compliance
  ~ with the License.  You may obtain a copy of the License at
  ~
  ~     http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing,
  ~ software distributed under the License is distributed on an
  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  ~ KIND, either express or implied.  See the License for the
  ~ specific language governing permissions and limitations
  ~ under the License.
  -->
<ehcache>

    <diskStore path="java.io.tmpdir/ki-spring-hibernate-ehcache"/>


    <defaultCache
        maxElementsInMemory="1000"
        eternal="false"
        timeToLiveSeconds="600"
        overflowToDisk="true"
        diskPersistent="false"
        />

    <!--=================================================================
        Hibernate Object Caches
        =================================================================-->

    <cache name="org.ki.samples.sprhib.model.Role"
        maxElementsInMemory="100"
        timeToLiveSeconds="0"
        overflowToDisk="true"/>

    <cache name="org.ki.samples.sprhib.model.Role.permissions"
        maxElementsInMemory="100"
        timeToLiveSeconds="0"
        overflowToDisk="true"/>

    <cache name="org.ki.samples.sprhib.model.User"
        maxElementsInMemory="1000"
        timeToLiveSeconds="3600"
        overflowToDisk="true"/>

    <cache name="org.ki.samples.sprhib.model.User.roles"
        maxElementsInMemory="1000"
        timeToLiveSeconds="3600"
        overflowToDisk="true"/>

</ehcache>