blob: 7dcd8fe96d4d8ab855af17331f5bf871d69e9b6f [file] [log] [blame]
Try performing some basic CRUD (Create/Read/Update/Delete) operations.
==== Create
To create a domain class use Map constructor to set its properties and call the `save()` method:
[source,groovy]
----
def p = new Person(name: "Fred", age: 40, lastVisit: new Date())
p.save()
----
The link:../api/org/grails/datastore/gorm/GormEntity.html#save()[save()] method will persist your class to the database using the underlying Hibernate ORM layer.
The `save()` method is defined by the link:../api/org/grails/datastore/gorm/GormEntity.html[GormEntity] trait.
==== Read
GORM transparently adds an implicit `id` property to your domain class which you can use for retrieval:
[source,groovy]
----
def p = Person.get(1)
assert 1 == p.id
----
This uses the static link:../api/org/grails/datastore/gorm/GormEntity.html#get(java.io.Serializable)[get(id)] method that expects a database identifier to read the `Person` object back from the database.
You can also load an object in a read-only state by using the `read(id)` method:
[source,groovy]
----
def p = Person.read(1)
----
In this case the underlying Hibernate engine will not do any dirty checking and the object will not be persisted. Note that if you explicitly call the `save()` method then the object is placed back into a read-write state.
In addition, you can also load a proxy for an instance by using the `load(id)` method:
[source,java]
----
def p = Person.load(1)
----
This incurs no database access until a method other than getId() is called. Hibernate then initializes the proxied instance, or
throws an exception if no record is found for the specified id.
==== Update
To update an instance, change some properties and then call `save()` again:
[source,groovy]
----
def p = Person.get(1)
p.name = "Bob"
p.save()
----
==== Delete
To delete an instance use the link:../api/org/grails/datastore/gorm/GormEntity.html#delete()[delete()] method:
[source,groovy]
----
def p = Person.get(1)
p.delete()
----