Transfer 1.1 Final Released

After a few minor delays, Transfer 1.1 Final is ready for final release.

A few bugs and fixes occured during the release candidate period, so make sure you upgrade to the final release if you are running the release candidate.

For those of you not familiar with the new features of 1.1, some of the highlights of 1.1 are:

Huge Performance Enhancements!

During Testing (on my machine), a 500 Object load has been reduced from an average of 8 seconds down to an average of 6 seconds.   This is a speed increase of around 25%!.  I've even seen Object loads of 500 objects as small at 2 seconds.

Even for the performance alone, it is worth upgrading!

Transfer Object Proxies

This of this like Lazy Loading, but on steroids!

With a simple new setting 'proxied' on onetomany, manytoone and manytomany elements like so:


<onetomany lazy="true" proxied="true">
...
<onetomany>

Objects in the collection will be loaded as Proxies of the real object, and their underlying data will be loaded on an individual basis upon request.

A very handy feature when dealing with large collections.

New Discard Algorithm

Before, if you had a configuration when A -manytoone->B, and B was discarded from the cache, both A and B would have been discarded.

Now in the new algorithm, if B gets discarded, A simply unloads its many to one, and stays resident in the cache.  This ensures there is less unnecessary too-and-fro between the database and Transfer's cache.

Cache Monitoring and Reporting

While there is a new CachMonitor component that allows you to get fine grained reporting on what the cache is doing, to get a re-built cache report, it is as simple as:


<cfimport prefix="report" taglib="/transfer/tags/reports">
<---  Basic Report --->
<report:cacheReport monitor="#application.transferFactory.getTransfer().getCacheMonitor()#">

<---  Detailed Report --->
<report:cacheReport monitor="#application.transferFactory.getTransfer().getCacheMonitor()#" mode="detail" chartsize="300">

TQL Custom Tags

Big thanks to Elliot Sprehn for contributing these TQL custom tags, that make it super easy to do TQL queries, in a <cfquery> style!

For example:


<cfimport prefix="t" taglib="/transfer/tags">

<---  Do list operations --->
<t:query name="result" transfer="#getTransfer()#">
        select
                u.firstName, u.lastName
        from
                user.User as u
        where
                u.email like <t:queryparam value="%example.com" type="string">
</t:query>

<---  Do read operations --->
<---  Get a single record as a TransferObject --->
<t:query name="user" action="read" class="user.User" transfer="#getTransfer()#">
        from
                user.User as u
        where
                u.email = <t:queryparam value="user@foo.com" type="string">
</t:query>

Lots of bug fixes

The usual slew of bug fixes, improvements, and other various adjustments.

If you want more information on what got included in this release, and why to upgrade, I would highly recommend the 'What's new in Transfer 1.0 (and 1.1) ' presentation recordings, and also make sure you check out the Release Notes .

Transfer 1.1 download .

Leave a Comment

Comments

  • Chris H | October 17, 2008

    damn nice, thanks for the update Mark!

  • Joshua Curtiss | October 31, 2008

    Speed improvements and awesome custom tags to make me have to think even less. I…LIKE it. 😀