10 Questions for Mark Mandel on Transfer ORM

Share this article

Ahead of the WebDU conference next week, Mark Mandel just yesterday released version 1.0 of Transfer ORM. If you’re wondering what the hell Transfer ORM is and why you should care, I asked Mark to answer a few questions to explain it all to us.

This post is in the same series (and uses the same questions) as the Geoff Bowers on FarCry and John Farrar on COOP.

Hi Mark! Give us your elevator pitch: summarize the essence of Transfer in a sentence or two.

Transfer is an Object Relational Mapper for ColdFusion.

It generates and populates CFCs that are Objects that represent the data in your application based on an XML configuration file. From there, it is able to automatically insert, update, delete that data into, and out of your database, without you having to write any of the SQL or CFML to do it.

OK, that sounds pretty cool. Let’s dig a little deeper: tell us more about the main features.

At the top level, Transfer generates what is commonly referred to as Business Objects for you, without you having to write any CFML or build a CFC. By Business Object, I mean an Object that represents an entity within your system, such as a User or a Product, or an Order.

These generated Business Objects (often referred to as TransferObjects, after the framework), can also be extended and enhanced to allow you to write any extra custom functionality that you may need.

Being an Object Relational Mapper, Transfer is then able to take these TransferObjects and automatically generate all the create, read, update and delete SQL for you.

For example, if I want Transfer to retrieve a particular user from the database, and return to me a User object, all I would need to do is:

user = transfer.get("User", 1);

And I would have a User object that had the all the relevant data for the User record, with a primary key of ‘1’, which can then be retrieved from the User object, e.g.


The user name is #user.getFirstName()# #user.getLastName()#

It is then possible to edit the information on the User object, and pass it back to Transfer to save it back to the database, e.g.

user.setFirstName("Mark");
user.setLastName("Mandel");

transfer.save(user);

And now, the user record in the database has had it’s ‘FirstName’ and ‘LastName’ columns set to ‘Mark’ and ‘Mandel’ respectively.

If I then wanted to delete that particular User object from the database, it is a simple operation of,

transfer.delete(user);

And the User record has been deleted from the database, without having to write a line of SQL.

Transfer does a lot more than just this, including handling Object composition, generating list queries, and providing a highly configurable caching layer.

If that is not enough information, here is a more complete overview of Transfer.

How did Transfer come about and what was the reason for creating it? How are you involved?

Well over 3 years ago, when I wrote my first blog post about Transfer, I was actually looking at just creating an automated way to generate my CFCs on the fly. It really was just a response to not wanting to explicitly write getters and setters all day!

Once I started getting that happening, I started thinking about how I could use this in conjunction with being able to automate the process of persisting the data that I had in these objects into, and out of the database.

At the time, there weren’t any other persistence frameworks in the ColdFusion space, so I started researching ORM techniques in other technologies, and started rebuilding my blog, Compound Theory, with the very first version of Transfer. In fact, Compound Theory was the very first site developed with Transfer!

As to how I am involved, as mentioned, I’m the creator and lead developer of Transfer. I also tend to manage much of the community aspect as well, but as the Transfer community has gotten larger, I’ve not needed to be as involved as we have quite a few very active members, who do a great job of helping out where needed.

When should a developer seek out Transfer? What has it got going for it?

A developer starts seeking out Transfer when they have had a taste of developing an Object Oriented, Database Driven application by hand.

They get sick of the monotony and the time it takes to write all the CFCs that represent their Business Objects, all the SQL to do all their create, read, update and delete statements, and the ColdFusion code to move the information to and from their Objects to and from their SQL statements.

When they discover Transfer, they quickly realise they don’t have to worry about these mundane details, and can focus more closely on how to design and model their application data layer, as Transfer takes care of it all for you, while also providing a slew of tools and generated code that can immediately be taken advantage of.

What are the pre-requisites for using Transfer? Is there any prior knowledge that would help new users? Does it use any other frameworks that could simplify or complicate things?

It is very useful to have a general understanding of Object Oriented Programming before starting with Transfer, as it does take a very OO perspective on development.

Transfer itself doesn’t use any other frameworks, but it integrates with many other frameworks, such as MVC frameworks like Model Glue, Mach II, Fusebox or ColdBox, and Inversion of Control frameworks like ColdSpring or Lightwire.

This enables you to very easily build some very mature and sophisticated application foundations simply by combining several ColdFusion community projects together, which can cut down development time on projects considerably.

What sets Transfer apart from other frameworks?

While Transfer does do a lot of things for you, it also attempts to ‘get out of your way’ in a lot of ways as well. It doesn’t set a prescribed methodology to your development, so you have a lot of freedom in the way you want to build your applications.

There are several key extension mechanisms that Transfer has that gives you a very large amount of flexibility with your implementations and means that you aren’t tied into a single way of developing your applications. In fact, I can count on one hand the number of places I’ve actually said on the mailing list or within the documentation ‘This is the only way to do X with Transfer!’.

Are there any great examples of Transfer “in the wild”?

The two largest commercial Transfer implementations that I am aware of are:

  • NGA.NET, Australia’s leading e-recruitment company. Since 2000 NGA.NET’s has been building its e-recruitment product and delivering solutions to Top 500 companies and federal government, where NGA.NET have 100% market share. Their application has gone through many evolutionary steps, with a brand new version built on Mach-ii, ColdSpring and Transfer architecture in beta for 2008.
  • Broadchoice is a provider of on-demand, integrated Web marketing solutions that uniquely combine social networking, content management, marketing campaigns, and analytics to deliver business intelligence based on actual customer, partner, and prospect behavior. Broadchoice eliminates waste and guesswork from marketing by enabling companies to engage their corporate community to increase marketing effectiveness.

Luis Majano and I recently also announced an open source wiki called CodexWiki, based on Transfer, ColdBox and ColdSpring. It is currently in private beta, but keep an eye on www.codexwiki.org for more details.

What about licensing, community, support and documentation?

Transfer is released under the Common Public Licence 1.0, which allows a great degree of freedom when utilising Transfer, both from a commercial, and open source perspective.

The two major Transfer support and community avenues, are the Transfer mailing list which has approximately 340 members, and is very active, and the #transfer IRC chat room on the Dalnet IRC network.

Compound Theory also recently announced commercial support programs, so the full gamut of both community and commercial support is available for Transfer.

Documentation can be found on the Transfer Wiki, which includes links to presentations, example applications and a variety of blog posts on Transfer.

Bug and Enhancement Ticket Tracking can be found on the Transfer Tracker.

All these details and more can be found at the Transfer website.

What’s coming up in the future for Transfer?

Transfer has just yesterday hit version 1.0, which is very exciting and has been a long time coming!

A brand new website for Transfer is in the works, which will integrate the already implemented wiki and tracker, to give the community even more ways to learn and develop with Transfer.

I’ve also finished entering all the possible enhancements for Transfer into the Tracker, and there will be a process to allow the community to help decide which of those features will make it into Transfer 1.1

The professional side of Transfer is also being expanded, with training modules currently being written to provide both onsite and online training options, starting with a full day of training at webDU!

It’s a very exciting time for Transfer!

Where can people find more information about Transfer?

The Transfer mailing list and documentation are some of the best places to get more information about Transfer.

There is a full listing of Transfer Presentations also available on the Wiki, which cover both introductory and advanced Transfer concepts, and a series of example applications, which are a great way to get your feet wet.

Great, thanks for playing along Mark!

Kay SmoljakKay Smoljak
View Author
Share this article
Read Next
Get the freshest news and resources for developers, designers and digital creators in your inbox each week
Loading form