220 likes | 419 Views
Transfer 101. Dan Vega. About Me. Programmer ColdFusion / Flex / AS3 / HTML / JS / CSS / Groovy & Grails Cleveland ColdFusion User Group Co Manager Active ColdFusion Community Member (Love Teaching) Open Source Developer CFMU (ColdFusion Multi Uploader)
E N D
Transfer 101 Dan Vega
About Me • Programmer • ColdFusion / Flex / AS3 / HTML / JS / CSS / Groovy & Grails • Cleveland ColdFusion User Group Co Manager • Active ColdFusion Community Member (Love Teaching) • Open Source Developer • CFMU (ColdFusion Multi Uploader) • RocketFM (ColdFusion + Flex File Manager) • cfPayflowPro (Payflow Pro API for ColdFusion) • cfPanel creator along with Todd Sharp • Cleveland OH / Sports Fan / Running / Weight Lifting / Poker • STERIS – Web Developer (www.steris.com) • Blogger – www.danvega.org
Transfer 101 Agenda • What is an ORM and why does it exist • What is Transfer • Installing Transfer • CRUD • e-commerce application demo • Relationships • Decorators • Q&A – Feel free to ask questions whenever
What Problems does an ORM solve • When creating systems that are comprised of objects there are many repetitive tasks that have to be done on a per object basis • Value Objects (beans) getters / setters • Writing CRUD (Create/Read/Update/Delete) • Handling Relationships • Populating objects with database queries • Populating SQL with data from your objects
What is Transfer • An ORM (Object Relational Mapping) Library for ColdFusion • Transfer ORM's main focus is to automate the repetitive tasks of creating the SQL and custom CFCs that are often required when developing a ColdFusion application. • Through a central configuration file Transfer knows how to generate objects, and how to manage them and their relationships back to the database • Created by Mark Mandel
What it is not • Hibernate / ColdFusion 9 ORM • The end of SQL • A code generator • ORM Frameworks • Reactor • CFWheels
Supported Systems • CFML Engines • Adobe ColdFusion MX 7+ • Railo 3.0+ • OpenBD 1.0+ ? • Database Servers (What no Access?) • MS SQL Server 2000+ • MySQL 4.1+ • PostGres 8.1+ • Oracle 9i+
Installing Transfer • Download the zip http://transfer-orm.com/ http://transfer.riaforge.org • Setup a mapping Per application mappings in ColdFusion 8 rock! Drop it in your web root • Configuration Datasource.xml / Transfer.xml / definitions • Create Transfer factory & Transfer Instance
CRUD - Create • transfer.new(“object”) • Returns a transfer.com.transferObject • getters / setters for properties • meta methods • Object helper methods • Events • debug getPropertyMemento() (struct) • demo
CRUD - Save • transfer.save(object) • Update existing • Create new • demo
CRUD - Read • transfer.get(“object”,id) • transfer.readByProperty(“object”,prop,val) • transfer.readByPropertyMap(“object’,map) • transfer.readByQuery(“object”,query)
CRUD - Delete • transfer.delete(object) • transfer.cascadeDelete(object) • demo
Retrieving Query Lists • Transfer.list(class, [orderProperty], [orderASC], [useAliases]) • Transfer.listByProperty(class, property, value, [orderProperty], [orderASC], [useAliases]) • Transfer.listByPropertyMap(class, propertyMap, [orderProperty], [orderASC], [useAliases]) • Transfer.listByQuery(query)
Managing Relationships & Compositions • Relationship types • One to many • Many to One • Many to Many • Collections • Struct • Array
Transfer Decorators • A decorator is used when you wish to write your own CFC to be used to represent data, in place of the Transfer generated Object. • Wraps and extends the transfer object • Must extend transfer.com.TransferDecorator • Decorator attribute on the object element in the transfer.xml configuration
Transfer 201 • Decorators • Cache • Object Proxies • Events • Transfer & Flex • Validation • ValidateThis - http://validatethis.riaforge.org • Frameworks based on transfer • Metro - http://metro.riaforge.org/
Resources • http://www.transfer-orm.com/ • http://docs.transfer-orm.com/ • http://groups.google.com/group/transfer-dev • http://www.compoundtheory.com/ • Email – danvega@gmail.com • Blog – www.danvega.org • Twitter - @cfaddict