Grails also supports creating domain classes mapped with Hibernate's Java 5.0 Annotations support.
To create an annotated domain class, create a new class in
src/java
and use the annotations defined as part of the EJB 3.0 spec (for more info on this see the
Hibernate Annotations Docs):
package com.books;
@Entity
public class Book {
private Long id;
private String title;
private String description;
private Date date; @Id
@GeneratedValue
public Long getId() {
return id;
} public void setId(Long id) {
this.id = id;
} public String getTitle() {
return title;
} public void setTitle(String title) {
this.title = title;
} public String getDescription() {
return description;
} public void setDescription(String description) {
this.description = description;
}
}
Once that is done you need to register the class with the Hibernate
sessionFactory
, to do you need to add entries to the
grails-app/conf/hibernate/hibernate.cfg.xml
file as follows:
<!DOCTYPE hibernate-configuration SYSTEM
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<mapping package="com.books" />
<mapping class="com.books.Book" />
</session-factory>
</hibernate-configuration>
By default the
hibernate.cfg.xml
file is located in the
grails-app/conf/hibernate
directory. If you wish to change this you can do so 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"]
}
When Grails loads it will register the necessary dynamic methods with the class. To see what else you can do with a Hibernate domain class see the section on
Scaffolding.