An Architect's View

CFML, Clojure, Software Design, Frameworks and more...

An Architect's View

Entries Tagged as orm

ORM, NoSQL and Vietnam - cf.Objective() 2013 - Slides and Code online

May 16, 2013 ·

The slides and code for my second presentation at cf.Objective() 2013 are now online:

Updated with the correct PDF link - sorry about that!

Tags: cfobjective · coldfusion · mongodb · orm

cf.Objective() 2010 - Great Pre-Conference Classes!

February 03, 2010 ·

This year's cf.Objective() is offering SIX pre-conference classes! You can choose from Building Secure CFML Applications, ColdBox: 100 Training, Developing Applications with ColdFusion 9 ORM, Getting Started with Flex / AIR Development, Mach-II / OOP from the Ground Up, Rapid Development with Model-Glue 3! Wow! Some of these are one-day courses (Wednesday April 21st) and some are two-day courses (Tuesday April 20th and Wednesday April 21st).

Tags: air · cfobjective · coldbox · coldfusion · flex · machii · modelglue · orm

My cf.Objective() 2009 Schedule

May 11, 2009 ·

In the absence of a printable schedule - sorry, Joe Rinehart says it's a problem with the Media3 hosting and he's been trying to get them to fix it for months! - here is my schedule for cf.Objective() 2009:

[Read more →]

Tags: adobe · air · architecture · cfobjective · coldbox · coldfusion · coldspring · flex · iphone · j2ee · jquery · machii · orm · oss · ria · saas · swiz · tdd

Some cf.Objective() schedule updates

April 25, 2009 ·

Now that Adobe has provided most of their session titles, we had to move Jason Delmore's Object Relational Mapping session to earlier in the schedule (so Terry Ryan's Advanced ORM session could follow). That means that if you signed up for Jason's talk, you're now signed up for Terry's advanced talk and if you signed up for Adobe's "super secret" Friday talk at 1:45pm, you're now signed up for Jason's basic ORM talk! Feel free to visit the online scheduler to update your selections if necessary!

Tags: adobe · cfobjective · coldfusion · orm

Transfer ORM and memory usage

March 14, 2009 ·

Some people - myself included - have observed runaway memory usage and apparent memory leaks with applications built with certain combinations of CFML frameworks that include Transfer ORM. We spent a lot of time tuning the JVM and looking at code and database usage in our Broadchoice Community Platform (CMS), we worked with Mike Brunt on load testing and tuning (highly recommended - if you have any performance problems, get Mike on your case!) as well as working with Mark Mandel directly on Transfer itself. All that work led to a much more stable system and we decided to just continue investigating as a background task.

[Read more →]

Tags: broadchoice · coldfusion · orm

CFUNITED 2009 - Initial Topics Announced

December 23, 2008 ·

Liz has announced the first round of topics for CFUNITED 2009. It's an interesting mix of speakers - some old, some new - and a broad spectrum of subject matter. After CFUNITED 2008, Liz has promised lots of changes and improvements and we already know that the venue is something special and an all-in-one location (addressing a bit complaint about the last few years' conferences). One of the new changes for 2009 is that a quarter of the content will be Flex/AIR related, acknowledging the growth and increasing relevance of these technologies to ColdFusion developers at large. Some of the highlights (from my point of view) of the topics announced so far:
  • Flex development with the Swiz framework - Chris Scott
  • Railo Open Source - Gert Franz
  • Groovy for ColdFusion Developers - Joe Rinehart
  • iPhone Apps + Adobe ColdFusion - Josh Adams
  • ColdFusion, Model-Glue, Hibernate, Spring, and Groovy - Ray Camden
  • AIR: Building Desktop Applications with Flex 3 - Rob Rusher
  • Hack Proofing ColdFusion - Shlomy Gantz
Definitely not your father's CFUNITED!

Tags: air · cfunited09 · coldfusion · grails · iphone · modelglue · orm · oss · railo · ria · swiz

Hibernate and Inheritance

September 07, 2008 ·

I'm already used to the magic that is Transfer and I can't imagine building a ColdFusion application without it. Adobe have said they're looking at integrating Hibernate into "Centaur" and showed some simple examples of how it might work in their keynote at CFUNITED (I expect we'll see more at MAX - you are going to MAX, right?). Hibernate is the de facto standard ORM for the Java world and it is very robust, scalable and feature-rich. We've been using Hibernate for a while to manage the persistence of our business objects and that has driven us toward Groovy for those business objects since, right now, you cannot use Hibernate with ColdFusion Components in any meaningful way and we didn't want to write all the verbose code that Java would require. A recent discussion on the Transfer mailing list has focused on how to model one-to-one relationships and why Transfer doesn't support them directly. This is one area in which Hibernate's features go far beyond what Transfer offers - and part of the reason for us to "switch" to Hibernate for future product development. Another modeling quandary when it comes to persistence is how to handle inheritance.

[Read more →]

Tags: grails · j2ee · orm

Better Living Through Transfer and ColdSpring

August 15, 2008 ·

We have a live system with customer data and a new requirement comes along that a particular piece of customer data must be encrypted in the database from now on. We already encrypt some columns (using Triple DES - which you might have guessed given the recent posts on my blog and here about mimicking ColdFusion's encryption in Java/Groovy). What is the smallest possible code change to ensure that as any user updates their data in future, this item will automatically be encrypted - whilst still handling the case of legacy data being unencrypted? We use Transfer for all our persistent business objects and almost all of our business objects have a decorator defined (for validation or some additional business logic). We also use Brian's TDOBeanInjectorObserver to automatically inject services into our business objects - just add a setter for a service and the bean injector takes care of the rest. Here's the bean injector definition in our ColdSpring file:
<bean id="transferObjectInjector" class="coldspring.transfer.TDOBeanInjectorObserver">
   <constructor-arg name="transfer"><ref bean="transfer" /></constructor-arg>
   <constructor-arg name="suffixList"><value>service,datasource</value></constructor-arg>
   <constructor-arg name="debugMode"><value>true</value></constructor-arg>
</bean>
Normally you would declare it non-lazy but we already do other non-lazy initialization so in our ColdSpring factory initialization code, we do this:
<cfset bf.getBean("transferObjectInjector") />
to force the bean injector to be initialized which, in turn, registers itself as a Transfer event listener (so that it can intercept object creation). The suffixList specifies that any set*Service() method or set*Datasource() method on the business objects managed by Transfer should be matched to beans defined in ColdSpring and injected. So how do we add the on-demand encryption to our business object's data?

[Read more →]

Tags: coldfusion · coldspring · orm

Bob Silverberg on Transfer ORM and Architecture

July 15, 2008 ·

Update: Bob just added Part VII so I'm updating this post to include that.
For ease of reference I just wanted to post a quick note highlighting Bob Silverberg's excellent series on using Transfer ORM and OO architecture: If Bob adds additional pieces, I'll update this post with his new articles. There's a lot of good information here although it may be a bit overwhelming on first read so be prepared to keep coming back to these posts!

Tags: architecture · coldfusion · orm

Life at Broadchoice

May 28, 2008 ·

May has been a quiet month on the blog because it has been an extremely busy month at Broadchoice. We completed our 2.0.2 and 2.0.3 releases and launched the new platform with a fair bit of press coverage. The platform is powered by ColdFusion 8.0.1, running Model-Glue 2 (BER), ColdSpring 1.2 BER and Transfer 1.0 BER and runs on a cluster of 64-bit Linux servers with synchronization of the Transfer cache managed through a set of ActiveMQ JMS server instances. The database is MySQL. We're continuing to work on a stream of minor releases as well as planning our next major release with a lot of new features. I'll be pulling together some presentations and articles about how we're using the frameworks together (because I think we're doing some interesting and unusual things, behind the scenes). I'll some a few snippets of code at Scotch in both of my presentations (and again at CFUNITED). I'm talking to the CFDevcon organizers about appropriate topics and they suggested a framework-related session so that might be the first unveiling of some of our ColdSpring / Transfer tricks and tips. I expect Ray will also be blogging about some aspects of our application architecture in due course. Feel free to sign up for a free Broadchoice account and see what we've been up to! Our support site (also powered by the Broadchoice Web Platform, as is our public website - we like to eat our own dog food!) has several ways for you to provide feedback to us!

Tags: broadchoice · cfdevcon08 · cfunited08 · coldfusion · coldspring · modelglue · orm