Where should I place a transient domain class in a grails app?
Asked Answered
M

2

8

Where should I place a transient domain class in a grails app?

Ie I have an Action class that will be passed about, and used, but never saved. Should this be in the grails-app/domain folder, or somewhere else?

Messene answered 19/2, 2011 at 15:46 Comment(0)
H
15

grails-app/domain is for persistent domain classes, but not all of your application's domain-related classes need to be there, e.g. in this case where you want to use it as a value object. You can put these in src/groovy along with other classes that aren't considered Grails artifacts.

If you want the classes to support validation, you can annotate them with @Validateable - see section "7.5 Validation Non Domain and Command Object Classes" in the ref docs: http://grails.org/doc/latest/

Hautbois answered 19/2, 2011 at 16:32 Comment(3)
Would you use a Command Object if you need the dependency injection and/or data binding aspects, and a @Validateable POGO otherwise? Any other considerations when choosing one approach over the other?Udale
Command objects are convenient, but only usable in a Controller, so often an @Validateable class in src/groovy is more flexibleHautbois
Current URL for the docs: grails.org/doc/latest/guide/…Marriageable
U
1

I think a CommandObject may fit the bill. These typically go in the same directory as your controllers, have the same validation features available to domain objects, but are never persisted. Great for things like search forms.

Udale answered 19/2, 2011 at 16:18 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.