Spring, Hibernate and more, while doing less                             Gavin Hogan – Software Architect, CommerceHub
A little bit about me.• Software Architect at CommerceHub• Working with Java and Groovy for 8 years• Working with Grails f...
•   Grails in a nutshell•   Some Grails patterns and philosophy•   Spring in Grails•   Object Persistence•   Grails web te...
… and a little history• Grails is a rapid web application development  framework• Grails is a full stack framework, not si...
… and a little history• Backed by SpringSource/VMWare• Grails is mature, project started in 2005, current  version is 2.2•...
• Grails was inspired by RoR. Ease of development is a  primary objective• Leverage convention over configuration with  se...
• Leverage existing operational capacity and  expertise. Plain old java deployment’• Portable war based deployment  • Apac...
• Grails really is ‘Spring in a can’• Most grails applications do not have any Spring xml!• Grails automates the configura...
• Plugins and applications can interact with Spring  lifecyles.• Controller layer is a wrapper around Spring MVC.• Spring ...
• Plugins and applications can interact with Spring  lifecyles.• Controller layer is a wrapper around Spring MVC.• Spring ...
• Grails Object Relationship Mapping (GORM) is the  default persistence layer in a Grails application• The default GORM im...
• Dynamic finders methods are automatically added  to your objects at run time  • E.g. User.findAllByLastName(Hogan) will ...
• Controllers and controller actions are automatically  mapped to urls based on name  • UserController.list() is mapped to...
• Binding transparently applies to objects used as  arguments in controller actions.  • UserController.update(User u) is m...
Validation• Grails provides simple validation DSL for Domain  and Command objects.• Common validation constraints built in...
Validation• Validation failures generate errors, which are  automatically associated with i18n message codes• Validation i...
Views• The default view technology for grails is Groovy  Server Pages (GSP)  • Very similar to JSP, fewer rough edges.• Vi...
Taglibs• I swore to never use taglibs many years ago, Grails  makes taglibs a joy• They are simple reusable view component...
What makes them better that jar files?• Plugins are core to Grails. Grails itself is built as a  collection of distinct pl...
What makes them better that jar files?• Anyone can write a plugin. You can choose to share  a plugin on grails.org• The ra...
• Not yet…• Lets talk about Groovy
• Groovy is a dynamic JVM language• It compiles to java bytecode and runs in the same  jvm as Java code• Intended to be fa...
Sensible simplifications• Closures can be thought of as being similar to  functions in JavaScript. You can pass them or ca...
Sensible simplifications• Meta-programming allows developers to modify  the behavior of a class at compile-time or  runtim...
Because live coding always works as expected!
@gavinInNYgavinhogan@gmail.com
Introduction to Grails 2013
Upcoming SlideShare
Loading in...5
×

Introduction to Grails 2013

698

Published on

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
698
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
16
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Introduction to Grails 2013

  1. 1. Spring, Hibernate and more, while doing less Gavin Hogan – Software Architect, CommerceHub
  2. 2. A little bit about me.• Software Architect at CommerceHub• Working with Java and Groovy for 8 years• Working with Grails for 3 years
  3. 3. • Grails in a nutshell• Some Grails patterns and philosophy• Spring in Grails• Object Persistence• Grails web technologies• Grails plugin ecosystem• A closer look at groovy• Live demo• Q&A
  4. 4. … and a little history• Grails is a rapid web application development framework• Grails is a full stack framework, not simply a web development framework• Grails Leverages Groovy and Spring extensively• Modular and extensible though the plugin infrastructure
  5. 5. … and a little history• Backed by SpringSource/VMWare• Grails is mature, project started in 2005, current version is 2.2• Inspired by Ruby on Rails. An RoR influence remains, but it is not a clone.
  6. 6. • Grails was inspired by RoR. Ease of development is a primary objective• Leverage convention over configuration with sensible defaults• Never eliminate flexibility or capability for the price of simplicity• All the power of Spring, Sitemesh, Hibernate is available, but common use case are pre configured
  7. 7. • Leverage existing operational capacity and expertise. Plain old java deployment’• Portable war based deployment • Apache Tomcat is the default container• ‘Standing on the shoulders of Giants’, Java compatibility allows the use of existing industrial strength components.
  8. 8. • Grails really is ‘Spring in a can’• Most grails applications do not have any Spring xml!• Grails automates the configuration and wiring of Spring beans• Name based ‘convention over configuration’ • UserService.groovy will automatically generate a bean named ‘userService’ • Object fields are autowired by name
  9. 9. • Plugins and applications can interact with Spring lifecyles.• Controller layer is a wrapper around Spring MVC.• Spring extensions and subprojects are easy to include with plugins. • Spring Security • Spring Integration • Spring Batch • …
  10. 10. • Plugins and applications can interact with Spring lifecyles.• Controller layer is a wrapper around Spring MVC.• Spring extensions and subprojects are easy to include with plugins. • Spring Security • Spring Integration • Spring Batch • …
  11. 11. • Grails Object Relationship Mapping (GORM) is the default persistence layer in a Grails application• The default GORM implementation is a wrapper around Hibernate.• Alternative implementations for MongoDB, Reddis, REST, SimpleDB and Riak exist• Mapping is sensible by default. • Class names name to table names • Field names map to column names
  12. 12. • Dynamic finders methods are automatically added to your objects at run time • E.g. User.findAllByLastName(Hogan) will return a list of users objects with that last name• The finders support composite queries and are very capable. Criteria builders and named queries support more challenging requirements• Mapping DSL, gives easy access to common configurations for Hibernate persistence
  13. 13. • Controllers and controller actions are automatically mapped to urls based on name • UserController.list() is mapped to user/list/• HTTP paramaters are automaticaly bound to controller arguments • UserController.show(String id) is mapped to user/show/<id>
  14. 14. • Binding transparently applies to objects used as arguments in controller actions. • UserController.update(User u) is mapped to <appName>/user/update/<id>?firstName=<firstN ame>&lastName=<lastName>• Generally speaking you do not think about binding much when working with Grails
  15. 15. Validation• Grails provides simple validation DSL for Domain and Command objects.• Common validation constraints built in • Unique • Size • Email • Not Blank/Null• Custom constraints easy to add directly to objects
  16. 16. Validation• Validation failures generate errors, which are automatically associated with i18n message codes• Validation is intended for domain and command objects but can be assigned to POJOs too.• Grails validation is powerful, but does not provide a good business rules capability.
  17. 17. Views• The default view technology for grails is Groovy Server Pages (GSP) • Very similar to JSP, fewer rough edges.• Views are automatically associated with actions based upon name• UserContoller.list() assumes a list.gsp in /views/user/• Templating is extremely easy, leverages Sitemesh.
  18. 18. Taglibs• I swore to never use taglibs many years ago, Grails makes taglibs a joy• They are simple reusable view components.• Taglibs a written as regular groovy Closures, they can interplay with each other and the rest of the application code• To create a taglib, simply create a class with ‘TagLib’ at the end of its name, all public closures will automatically become tags
  19. 19. What makes them better that jar files?• Plugins are core to Grails. Grails itself is built as a collection of distinct plugins• In Grails, plugins are the standard unit of reusable code.• Plugins usually package behavior, not only capability. • E.g. Including the Shiro security plugin actually secures/locks down your application.
  20. 20. What makes them better that jar files?• Anyone can write a plugin. You can choose to share a plugin on grails.org• The range of plugins is now vast • Though quality is varied • Suffers from the GitHub effect, “I can share this so I will!”
  21. 21. • Not yet…• Lets talk about Groovy
  22. 22. • Groovy is a dynamic JVM language• It compiles to java bytecode and runs in the same jvm as Java code• Intended to be familiar/comfortable to Java developers• Groovy provides additional, powerful programing features, Closures, Mixins, Meta-Programming
  23. 23. Sensible simplifications• Closures can be thought of as being similar to functions in JavaScript. You can pass them or call them.• Mixins are used to compose complex object without inheritance. You may think of them as behavioral interfaces, that actually do stuff.
  24. 24. Sensible simplifications• Meta-programming allows developers to modify the behavior of a class at compile-time or runtime. Grails extensively uses meta programming to add behavior to your application• Groovy is not strongly typed, ‘def’ is similar to ‘var’ in JavaScript, and can be thought of as similar to Object in java.• Some many enhancements to Collections API
  25. 25. Because live coding always works as expected!
  26. 26. @gavinInNYgavinhogan@gmail.com
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×