Photo from Chile

How I Use Transfer Today - A Gateway MapFactoryBean

I left something critical out of my last post about how I'm using Transfer (an ORM for ColdFusion) these days.

If you've been following along you'll know that I'm using an Abstract Transfer Decorator, which all of my concrete decorators extend, and that I'm using Brian Kotek's most excellent Bean Injector to load singletons into my Transfer objects. This raises an interesting issue: How to inject the appropriate Gateway Object into my Transfer Object.


ValidateThis! - Mea Culpa

While working on a very cool update to my object oriented validation framework for ColdFusion I discovered that my last update introduced an error. This error caused the online demo to not report certain server side validation failures and also had repercussions for the required server side validation type.

So, if you visited the demo page and thought, "What's up with this guy? This thing doesn't work at all!", or if you've downloaded the code from RIAForge recently, you may want to check out the demo and/or redownload. The problem has been fixed in both locations.

Note to self - more unit tests are needed!

P.S. I hope to blog about the cool new changes in the very near future.

How I Use Transfer Today - Encapsulating Database Access

I've been meaning to follow up on my How I Use Transfer series, as I've made a few changes to the way I write my ColdFusion code since that series was written. One of the biggest changes was to encapsulate all database access in my Gateway components.

Now I say biggest not because it took a lot of time and effort to make the change, in fact the opposite is true. I say biggest simply because it represented a significant shift in the way I'm designing my model. Let me start with the rationale for making this change.


The First Post to ValidateThis!

I'm excited to say that the Google group that I set up as a discussion forum for my object oriented validation framework for ColdFusion has received its first post. And it was a doozy. Some really great ideas, and I, in my usual fashion, posted a response of an appropriate length ;-)

So I'd like to invite anyone interested in becoming part of the conversation, or interested in just listening in, to join the group. I'm not necessarily going to blog about everything that comes up in the group, and judging by this first post/response, there is bound to be some pretty interesting stuff going on.

For anyone who's interested but doesn't want to add yet another source of email to their inbox, I can confidently say that the volume of traffic will be negligible. And first post moderation is active, so spam should be pretty much non existent.

Click here to join the party.

Paul Marcotte on Transient Factories

Just a note to say that Paul Marcotte has written an interesting blog post describing a ColdFusion component which is an implementation of a Factory Pattern. This component can be used to centralize creation of transient objects in your model. He has included a description of the usage of the component that he wrote (with a tiny bit of input from me), as well as a download of that component. I am using this Transient Factory inside my own validation framework and have found it to be very useful.

I believe the component will also be available on RIAForge in the not too distant future.

ValidateThis Requires ColdFusion 8.0.1

I'd like to thank Adam (who didn't leave his URL) for bringing this omission in the requirements for the framework to my attention.

Because of the way the framework uses onMissingMethod, ColdFusion 8.0.1 is required - it will not work properly under 8.0. I was aware of this, but forgot to specify it in the requirements. I hope this hasn't inconvenienced anyone other than Adam.

He asked whether it was possible for me to make the framework backward compatible with CF 8.0, and while I'm sure it's possible I don't feel that it would be a worthwhile use of resources. If there are those out there who would be interested in using the framework but are currently limited to running on 8.0, please let me know. If the demand is there I would certainly consider seeing what I can do to make it work.

I Don't Care What An ORM Is!

There have been some postings recently about the state of the ORM landscape in ColdFusion, and while I have found this conversation interesting, I have not found it particularly useful.

There exists a group of ColdFusion developers, myself included, who would like to improve the way that we write and structure our code. We have been encouraged to adopt a more object oriented approach to our development, and I, for one, have found it to be of great benefit.

One of the things that has made this transition easier for me is the existence of these "ORMs" for ColdFusion. I started off with Reactor, and now use Transfer, and I have found that not only do these "ORMs" do a lot of the more menial tasks for me, but they also encourage me to "think in objects". Sure, the objects that I'm working with are closely tied to the physical database structure, but they're still objects. I still get the benefit of encapsulation, and through the use of Transfer decorators I feel that I am able to give my objects meaningful behaviour, thereby creating rich business objects.

I know from experience that when a developer is starting down this path it can be quite daunting, and we often look to those with more experience than ourselves for guidance. I hope that someone in that boat would not be "turned off" the existing set of "ORMs" for ColdFusion because they are not considered to be true ORMs.

This brings me to the title of this post, which was inspired by a post by Peter Bell. I find Transfer to be an indispensable tool for building OO-like applications with ColdFusion, and can only encourage people to investigate and use it. It may not be a true ORM, but that doesn't make it any less useful. Let's not throw the baby out with the bath water.

More Entries