# cache

## Purpose

Enables the configuration of the Hibernate second-level cache.

## Examples

    class Book {
        …
        static mapping = {
            cache true
        }
    }

## Description

Usage: `cache(boolean/string/map)`

Arguments:

- `usage` - The cache usage. Can be `read-only`, `read-write`, `nonstrict-read-write` or `transactional`
- `include` (optional) - Whether to include non-lazy associations. Can be `all` or `non-lazy`

In order to take advantage of the Hibernate second-level cache you explicitly need to enable caching per domain class. For example:

    static mapping = {
        cache true
    }

This will configure the domain class to use a 'read-write' cache, but you can configure whatever cache policy is appropriate:

    static mapping = {
        cache 'transactional'
    }

Or

    static mapping = {
        cache usage:'read-only', include:'non-lazy'
    }

You can also configure the cache policy on a per association basis:

    class Author {
        static hasMany = [books:Book]
        static mapping = {
            books cache: true // or 'read-write' etc.
        }
    }

For more information see the section on Caching in the user guide.