5-minute techniques bending gorm for enterprise integration...agenda the case for gorm conventional...
TRANSCRIPT
![Page 1: 5-minute Techniques Bending GORM for Enterprise Integration...Agenda The case for GORM Conventional thinking, unconventional productivity Relationships, any way you like ‘em Constraints,](https://reader034.vdocument.in/reader034/viewer/2022052009/601e511c5c374b7b645ac083/html5/thumbnails/1.jpg)
5-minute Techniques for Enterprise Integration
Published under the Creative Commons Attribution Noncommercial Share Alike License Version 2.5. (Please see http://creativecommons.org/licenses/by-nc-sa/2.5 for complete details.)
Bending GORMJason Rudolph
![Page 2: 5-minute Techniques Bending GORM for Enterprise Integration...Agenda The case for GORM Conventional thinking, unconventional productivity Relationships, any way you like ‘em Constraints,](https://reader034.vdocument.in/reader034/viewer/2022052009/601e511c5c374b7b645ac083/html5/thumbnails/2.jpg)
Introduction
Jason Rudolph
jasonrudolph.com
thinkrelevance.com
![Page 3: 5-minute Techniques Bending GORM for Enterprise Integration...Agenda The case for GORM Conventional thinking, unconventional productivity Relationships, any way you like ‘em Constraints,](https://reader034.vdocument.in/reader034/viewer/2022052009/601e511c5c374b7b645ac083/html5/thumbnails/3.jpg)
AgendaThe case for GORM
Conventional thinking, unconventional productivity
Relationships, any way you like ‘em
Constraints, declare and be done
GORM for non-conformists
Hibernate mappings
EJB3 annotations
Groovy to the rescue!
![Page 4: 5-minute Techniques Bending GORM for Enterprise Integration...Agenda The case for GORM Conventional thinking, unconventional productivity Relationships, any way you like ‘em Constraints,](https://reader034.vdocument.in/reader034/viewer/2022052009/601e511c5c374b7b645ac083/html5/thumbnails/4.jpg)
![Page 5: 5-minute Techniques Bending GORM for Enterprise Integration...Agenda The case for GORM Conventional thinking, unconventional productivity Relationships, any way you like ‘em Constraints,](https://reader034.vdocument.in/reader034/viewer/2022052009/601e511c5c374b7b645ac083/html5/thumbnails/5.jpg)
DAOs Considered Harmful
Grails Object-Relational Mapping (GORM)
Zero-configuration persistence management
Rich relationship model
Declarative validation
Powerful query support
Easy scaffolding
![Page 6: 5-minute Techniques Bending GORM for Enterprise Integration...Agenda The case for GORM Conventional thinking, unconventional productivity Relationships, any way you like ‘em Constraints,](https://reader034.vdocument.in/reader034/viewer/2022052009/601e511c5c374b7b645ac083/html5/thumbnails/6.jpg)
DAODemo
![Page 7: 5-minute Techniques Bending GORM for Enterprise Integration...Agenda The case for GORM Conventional thinking, unconventional productivity Relationships, any way you like ‘em Constraints,](https://reader034.vdocument.in/reader034/viewer/2022052009/601e511c5c374b7b645ac083/html5/thumbnails/7.jpg)
Conventional Thinking
Demo
![Page 8: 5-minute Techniques Bending GORM for Enterprise Integration...Agenda The case for GORM Conventional thinking, unconventional productivity Relationships, any way you like ‘em Constraints,](https://reader034.vdocument.in/reader034/viewer/2022052009/601e511c5c374b7b645ac083/html5/thumbnails/8.jpg)
More GORM Fu
Customizable fetch modes
static fetchMode ww= [someOtherAttribute : ‘eager’]
Composition
static embedded = [‘someAttribute’]
Mapping inheritance
![Page 9: 5-minute Techniques Bending GORM for Enterprise Integration...Agenda The case for GORM Conventional thinking, unconventional productivity Relationships, any way you like ‘em Constraints,](https://reader034.vdocument.in/reader034/viewer/2022052009/601e511c5c374b7b645ac083/html5/thumbnails/9.jpg)
Declaring Constraints
Pre-packaged constraints
Custom constraints
Influence schemas and scaffolding
blank
creditcard
inList
min
max
matches
nullable
range
unique
url
etc.
![Page 10: 5-minute Techniques Bending GORM for Enterprise Integration...Agenda The case for GORM Conventional thinking, unconventional productivity Relationships, any way you like ‘em Constraints,](https://reader034.vdocument.in/reader034/viewer/2022052009/601e511c5c374b7b645ac083/html5/thumbnails/10.jpg)
The Power of Constraint
Demo
![Page 11: 5-minute Techniques Bending GORM for Enterprise Integration...Agenda The case for GORM Conventional thinking, unconventional productivity Relationships, any way you like ‘em Constraints,](https://reader034.vdocument.in/reader034/viewer/2022052009/601e511c5c374b7b645ac083/html5/thumbnails/11.jpg)
Defying Conventional Wisdom
Non-conforming table/column names
Custom sequences
Complex keys
Advanced mappings
![Page 12: 5-minute Techniques Bending GORM for Enterprise Integration...Agenda The case for GORM Conventional thinking, unconventional productivity Relationships, any way you like ‘em Constraints,](https://reader034.vdocument.in/reader034/viewer/2022052009/601e511c5c374b7b645ac083/html5/thumbnails/12.jpg)
No Schema Left Behind
Demo
![Page 13: 5-minute Techniques Bending GORM for Enterprise Integration...Agenda The case for GORM Conventional thinking, unconventional productivity Relationships, any way you like ‘em Constraints,](https://reader034.vdocument.in/reader034/viewer/2022052009/601e511c5c374b7b645ac083/html5/thumbnails/13.jpg)
Hibernate XML - Step-by-Step
Define Hibernate artifacts
Add hibernate.cfg.xml
Prepare HBM file for each deviant table
Consider reverse engineering with Hibernate tools
Create Grails domain classes
Add constraints (optional)
![Page 14: 5-minute Techniques Bending GORM for Enterprise Integration...Agenda The case for GORM Conventional thinking, unconventional productivity Relationships, any way you like ‘em Constraints,](https://reader034.vdocument.in/reader034/viewer/2022052009/601e511c5c374b7b645ac083/html5/thumbnails/14.jpg)
Why Hibernate XML?
Standard Hibernate artifacts
Reuse your existing mappings
Full power of GORM
Dynamic persistence methods
Constraints
Scaffolding
![Page 15: 5-minute Techniques Bending GORM for Enterprise Integration...Agenda The case for GORM Conventional thinking, unconventional productivity Relationships, any way you like ‘em Constraints,](https://reader034.vdocument.in/reader034/viewer/2022052009/601e511c5c374b7b645ac083/html5/thumbnails/15.jpg)
Pimp My EJBsDemo
![Page 16: 5-minute Techniques Bending GORM for Enterprise Integration...Agenda The case for GORM Conventional thinking, unconventional productivity Relationships, any way you like ‘em Constraints,](https://reader034.vdocument.in/reader034/viewer/2022052009/601e511c5c374b7b645ac083/html5/thumbnails/16.jpg)
EJB3 Step-by-Step
Start with Java 5 (or higher)
Update DataSource.groovy
configClass = wwGrailsAnnotationConfiguration.class
Add POJOs to src/java
Define hibernate.cfg.xml
Drop in constraints (optional)
![Page 17: 5-minute Techniques Bending GORM for Enterprise Integration...Agenda The case for GORM Conventional thinking, unconventional productivity Relationships, any way you like ‘em Constraints,](https://reader034.vdocument.in/reader034/viewer/2022052009/601e511c5c374b7b645ac083/html5/thumbnails/17.jpg)
Why Annotate?
Standards-based POJOs
Reuse elsewhere
Not tied to Grails
Full power of GORM (once again)
Dynamic persistence methods
Constraints
Scaffolding
![Page 18: 5-minute Techniques Bending GORM for Enterprise Integration...Agenda The case for GORM Conventional thinking, unconventional productivity Relationships, any way you like ‘em Constraints,](https://reader034.vdocument.in/reader034/viewer/2022052009/601e511c5c374b7b645ac083/html5/thumbnails/18.jpg)
Rampant AgnosticismDemo
![Page 19: 5-minute Techniques Bending GORM for Enterprise Integration...Agenda The case for GORM Conventional thinking, unconventional productivity Relationships, any way you like ‘em Constraints,](https://reader034.vdocument.in/reader034/viewer/2022052009/601e511c5c374b7b645ac083/html5/thumbnails/19.jpg)
A Groovier SolutionDemo
![Page 20: 5-minute Techniques Bending GORM for Enterprise Integration...Agenda The case for GORM Conventional thinking, unconventional productivity Relationships, any way you like ‘em Constraints,](https://reader034.vdocument.in/reader034/viewer/2022052009/601e511c5c374b7b645ac083/html5/thumbnails/20.jpg)
This Just In...Brand New for 1.0!
![Page 21: 5-minute Techniques Bending GORM for Enterprise Integration...Agenda The case for GORM Conventional thinking, unconventional productivity Relationships, any way you like ‘em Constraints,](https://reader034.vdocument.in/reader034/viewer/2022052009/601e511c5c374b7b645ac083/html5/thumbnails/21.jpg)
GORM DSL
class Knight { // ... static mapping = {
}}
![Page 22: 5-minute Techniques Bending GORM for Enterprise Integration...Agenda The case for GORM Conventional thinking, unconventional productivity Relationships, any way you like ‘em Constraints,](https://reader034.vdocument.in/reader034/viewer/2022052009/601e511c5c374b7b645ac083/html5/thumbnails/22.jpg)
GORM DSL
class Knight { // ... static mapping = { table ‘knights’
}}
![Page 23: 5-minute Techniques Bending GORM for Enterprise Integration...Agenda The case for GORM Conventional thinking, unconventional productivity Relationships, any way you like ‘em Constraints,](https://reader034.vdocument.in/reader034/viewer/2022052009/601e511c5c374b7b645ac083/html5/thumbnails/23.jpg)
GORM DSL
class Knight { // ... static mapping = { table ‘knights’ version false
}}
![Page 24: 5-minute Techniques Bending GORM for Enterprise Integration...Agenda The case for GORM Conventional thinking, unconventional productivity Relationships, any way you like ‘em Constraints,](https://reader034.vdocument.in/reader034/viewer/2022052009/601e511c5c374b7b645ac083/html5/thumbnails/24.jpg)
GORM DSL
class Knight { // ... static mapping = { table ‘knights’ version false id column: ‘knight_id’
}}
![Page 25: 5-minute Techniques Bending GORM for Enterprise Integration...Agenda The case for GORM Conventional thinking, unconventional productivity Relationships, any way you like ‘em Constraints,](https://reader034.vdocument.in/reader034/viewer/2022052009/601e511c5c374b7b645ac083/html5/thumbnails/25.jpg)
GORM DSL
class Knight { // ... static mapping = { table ‘knights’ version false id column: ‘knight_id’ columns { numDragonsSlain column: ‘dragon_count’ // ... } }}
![Page 26: 5-minute Techniques Bending GORM for Enterprise Integration...Agenda The case for GORM Conventional thinking, unconventional productivity Relationships, any way you like ‘em Constraints,](https://reader034.vdocument.in/reader034/viewer/2022052009/601e511c5c374b7b645ac083/html5/thumbnails/26.jpg)
dē es elDemo
![Page 27: 5-minute Techniques Bending GORM for Enterprise Integration...Agenda The case for GORM Conventional thinking, unconventional productivity Relationships, any way you like ‘em Constraints,](https://reader034.vdocument.in/reader034/viewer/2022052009/601e511c5c374b7b645ac083/html5/thumbnails/27.jpg)
ID generation
Lazy/eager fetching
Inheritance strategy
Index definitions
Caching
More Declarative DSL Goodness
![Page 28: 5-minute Techniques Bending GORM for Enterprise Integration...Agenda The case for GORM Conventional thinking, unconventional productivity Relationships, any way you like ‘em Constraints,](https://reader034.vdocument.in/reader034/viewer/2022052009/601e511c5c374b7b645ac083/html5/thumbnails/28.jpg)
Why DSL?
No additional XML or Java needed
Lean syntax
Mappings close at hand
Full power of GORM (one more time)
![Page 29: 5-minute Techniques Bending GORM for Enterprise Integration...Agenda The case for GORM Conventional thinking, unconventional productivity Relationships, any way you like ‘em Constraints,](https://reader034.vdocument.in/reader034/viewer/2022052009/601e511c5c374b7b645ac083/html5/thumbnails/29.jpg)
Going Further with GORM
GORM outside of Grails
grails.org/gorm+-+standalone+gorm
Java on GORM
jroller.com/page/ie?entry=java_on_grails
![Page 30: 5-minute Techniques Bending GORM for Enterprise Integration...Agenda The case for GORM Conventional thinking, unconventional productivity Relationships, any way you like ‘em Constraints,](https://reader034.vdocument.in/reader034/viewer/2022052009/601e511c5c374b7b645ac083/html5/thumbnails/30.jpg)
Still More to ExploreCustom user types
grails.org/hibernate+integration
Migrations
code.google.com/p/dbmigrate/wiki/Grails
Explicit Insert Plugin
grails.org/explicit+insert+plugin
![Page 31: 5-minute Techniques Bending GORM for Enterprise Integration...Agenda The case for GORM Conventional thinking, unconventional productivity Relationships, any way you like ‘em Constraints,](https://reader034.vdocument.in/reader034/viewer/2022052009/601e511c5c374b7b645ac083/html5/thumbnails/31.jpg)
Resources
grails.org
Downloads
Latest release (1.0.1)
Development snapshot (1.0.2)
User guide, tutorials, screencasts, etc.
Mailing lists (grails.org/mailing+lists)
![Page 32: 5-minute Techniques Bending GORM for Enterprise Integration...Agenda The case for GORM Conventional thinking, unconventional productivity Relationships, any way you like ‘em Constraints,](https://reader034.vdocument.in/reader034/viewer/2022052009/601e511c5c374b7b645ac083/html5/thumbnails/32.jpg)
Resources (cont’d)
GORM Documentation
grails.org/gorm
ORM DSL
grails.org/GORM+-+Mapping+DSL
![Page 33: 5-minute Techniques Bending GORM for Enterprise Integration...Agenda The case for GORM Conventional thinking, unconventional productivity Relationships, any way you like ‘em Constraints,](https://reader034.vdocument.in/reader034/viewer/2022052009/601e511c5c374b7b645ac083/html5/thumbnails/33.jpg)
Resources (cont’d)
Grails + EJB3 Tutorial
infoq.com/articles/grails-ejb-tutorial
Hibernate Tools
hibernate.org/255.html
![Page 34: 5-minute Techniques Bending GORM for Enterprise Integration...Agenda The case for GORM Conventional thinking, unconventional productivity Relationships, any way you like ‘em Constraints,](https://reader034.vdocument.in/reader034/viewer/2022052009/601e511c5c374b7b645ac083/html5/thumbnails/34.jpg)
![Page 35: 5-minute Techniques Bending GORM for Enterprise Integration...Agenda The case for GORM Conventional thinking, unconventional productivity Relationships, any way you like ‘em Constraints,](https://reader034.vdocument.in/reader034/viewer/2022052009/601e511c5c374b7b645ac083/html5/thumbnails/35.jpg)
Slides & Examples Available
@
jasonrudolph.com/downloads
Please Fill Out Your Evaluations
This presentation is published under the Creative Commons Attribution Noncommercial Share Alike License Version 2.5.
(Please see http://creativecommons.org/licenses/by-nc-sa/2.5 for complete details.)