# Constraints Usage

Constraints provide Grails with a declarative DSL for defining validation rules, schema generation and CRUD generation meta data. An example of a set of constraints applied to a domain class are as follows:

    class User {
        ...    static constraints = {
            login(size:5..15, blank:false, unique:true)
            password(size:5..15, blank:false)
            email(email:true, blank:false)
            age(min:18, nullable:false)
        }
    }

Refer to the user guide topic on Constraints for more information.

# Global Constraints

You can apply constraints globally inside `grails-app/conf/Config.groovy` as follows:

    grails.gorm.default.constraints = {
       '*'(nullable:true, size:1..20)
    }

The wildcard signifies that the constraints apply to all properties. You can also define shared constraints:

    grails.gorm.default.constraints = {
       myShared(nullable:true, size:1..20)
    }

That can be reused in your class:

    class User {
        ...    static constraints = {
            login(shared:"myShared")
        }
    }