grails domain classes

16
Grails - Domain Classes Hiten Pratap Singh [email protected] https://github.com/hitenpratap

Upload: nexthoughts-technologies

Post on 17-Jan-2017

186 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Grails domain classes

Grails - Domain Classes

Hiten Pratap [email protected]

https://github.com/hitenpratap

Page 2: Grails domain classes

Domain Classes

• Object oriented (OO) applications involve a domain model representing the business entities that the application deals with.• Domain classes has properties associated with them which map

to a database in order to persist instances of those classes.• Domain class create : grails create -domain- class

<<class_name>>

Page 3: Grails domain classes

Persisting Fields to the Database

• All the fields in a domain class are persisted to the database.• Each field in the class will map to a column in the database.

Page 4: Grails domain classes

Validations

• Grails allows you to apply constraints to a domain class that can then be used to validate a domain class instance.• Constraints are applied using a "constraints" closure.• To validate a domain class you can call the "validate()"

method on an instance.

Page 5: Grails domain classes

Exampleclass User { String login String password String email Date age

static constraints={ login(size:5..15,blank:false,unique:true) password(size:5..15,blank:false) email(email:true,blank:false) age(min:new Date(),nullable:false)

}}

Page 6: Grails domain classes

Validating Constraints

def user = new User(params) if(user.validate()){ //do something }else{ user.errors.allErrors.each{ Println it } }

Page 7: Grails domain classes

Custom Validators

class User { static constraints = { password(unique:true, length:5..15, validator{val, obj > if(val?.equalsIgnoreCase(obj.firstName)){ return false } })}}

Page 8: Grails domain classes

Transient Properties

• Transient properties are never written to the database.• Every property in a domain class is persistent and required.• They don't have a corresponding column in the database.

Page 9: Grails domain classes

Example

• class Company { BigDecimal cash BigDecimal receivables BigDecimal getNetWorth() { cash + receivables } static transients = ['netWorth'] }

Page 10: Grails domain classes

Custom Mappingclass Person { String firstName String lastName Integer age static mapping = { id column:'person_id' firstName column:'person_first_name' lastName column:'person_last_name' age column:'person_age' version false }}

Page 11: Grails domain classes

Relationships

• Every table should have at least one relationship to another table.• The types of relationships that Grails supports are:

• One- to- one• One -to -many• Many -to -one• Many -to- many

Page 12: Grails domain classes

One-to-One Relationship

class Car { Engine engine}

class Engine { static belongsTo = [car:Car]}

Page 13: Grails domain classes

One-to-many relationships

class Artist {

String name

static hasMany = [albums:Album]

}

Page 14: Grails domain classes

Many-to-many relationships

class Book { static belongsTo = Author static hasMany = [authors:Author]}

class Author { static hasMany = [books:Book]}

Page 15: Grails domain classes

Questions?

Page 16: Grails domain classes

Hiten Pratap [email protected]

https://github.com/hitenpratap