## 5.5.2.12 Custom Naming Strategy

By default Grails uses Hibernate's `ImprovedNamingStrategy` to convert domain class Class and field names to SQL table and column names by converting from camel-cased Strings to ones that use underscores as word separators. You can customize these on a per-instance basis in the `mapping` closure but if there's a consistent pattern you can specify a different `NamingStrategy` class to use.

Configure the class name to be used in `grails-app/conf/DataSource.groovy` in the `hibernate` section, e.g.

    dataSource {
        pooled = true
        dbCreate = "create-drop"
    	 …
    }hibernate {
        cache.use_second_level_cache = true
    	 …
        naming_strategy = com.myco.myproj.CustomNamingStrategy
    }

You can use an existing class or write your own, for example one that prefixes table names and column names:

    package com.myco.myprojimport org.hibernate.cfg.ImprovedNamingStrategy
    import org.hibernate.util.StringHelperclass CustomNamingStrategy extends ImprovedNamingStrategy {    String classToTableName(String className) {
            "table_" + StringHelper.unqualify(className)
        }    String propertyToColumnName(String propertyName) {
            "col_" + StringHelper.unqualify(propertyName)
        }
    }