## 15.1 Using Hibernate XML Mapping Files

Mapping your domain classes via XML is pretty straightforward. Simply create a `hibernate.cfg.xml` file in your project's `grails-app/conf/hibernate` directory, either manually or via the create-hibernate-cfg-xml command, that contains the following:

    <?xml version='1.0' encoding='UTF-8'?>
    <!DOCTYPE hibernate-configuration PUBLIC
            "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
            "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
    <hibernate-configuration>
        <session-factory>
            <!-- Example mapping file inclusion -->
            <mapping resource="org.example.Book.hbm.xml"/>
            …
        </session-factory>
    </hibernate-configuration>

The individual mapping files, like 'org.example.Book.hbm.xml' in the above example, also go into the `grails-app/conf/hibernate` directory. To find out how to map domain classes via XML, check out the Hibernate manual.

If the default location of the `hibernate.cfg.xml` file doesn't suit you, you can change it by specifying an alternative location in `grails-app/conf/DataSource.groovy`:

    hibernate {
        config.location = "file:/path/to/my/hibernate.cfg.xml"
    }

or even a list of locations:

    hibernate {
        config.location = ["file:/path/to/one/hibernate.cfg.xml","file:/path/to/two/hibernate.cfg.xml"]
    }

Grails also allows you to write your domain model in Java or re-use an existing one that already has Hibernate mapping files. Simply place the mapping files into `grails-app/conf/hibernate` and either put the Java files in `src/java` or (if the domain model is stored in a JAR) the packaged classes into the project's `lib` directory. You still need the `hibernate.cfg.xml` though!