<?xml version="1.0" encoding="utf-8"?>
			
			<rss version="2.0">
			<channel>
			<title>Bob&apos;s Blog - ColdFusion Tidbits - CF ORM Integration</title>
			<link>http://www.silverwareconsulting.com/index.cfm</link>
			<description>Some stuff about ColdFusion and Transfer</description>
			<language>en-us</language>
			<pubDate>Thu, 09 Sep 2010 05:00:24 -0400</pubDate>
			<lastBuildDate>Mon, 16 Aug 2010 11:43:00 -0400</lastBuildDate>
			<generator>BlogCFC</generator>
			<docs>http://blogs.law.harvard.edu/tech/rss</docs>
			<managingEditor>bob.silverberg@gmail.com</managingEditor>
			<webMaster>bob.silverberg@gmail.com</webMaster>
			
			<item>
				<title>Join me at RIA Unleashed in Boston to Learn about ColdFusion ORM</title>
				<link>http://www.silverwareconsulting.com/index.cfm/2010/8/16/Join-me-at-RIA-Unleashed-in-Boston-to-Learn-about-ColdFusion-ORM</link>
				<description>
				
				I am pleased and honoured to announce that I&apos;ll be teaching and speaking at &lt;a href=&quot;http://www.riaunleashed.com/&quot; target=&quot;_blank&quot;&gt;RIA Unleashed&lt;/a&gt; in Boston in November.
Organized by &lt;a href=&quot;http://www.remotesynthesis.com/&quot; target=&quot;_blank&quot;&gt;Brian Rinaldi&lt;/a&gt; (one of my heroes in the ColdFusion community), RIA Unleashed is a conference that I have wanted to attend in the past and I think this year&apos;s
version is going to be stellar. The format is a bit different from other CF conferences that I have attended: it&apos;s a two day conference, with day one consisting of
half-day hands-on workshops, and day two having standard one-hour sessions across multiple tracks. You can find more information about the 
&lt;a href=&quot;http://www.riaunleashed.com/page.cfm/workshops&quot; target=&quot;_blank&quot;&gt;half-day workshops&lt;/a&gt; 
and &lt;a href=&quot;http://www.riaunleashed.com/page.cfm/topics&quot; target=&quot;_blank&quot;&gt;one-hour sessions&lt;/a&gt; at
the RIA Unleashed site.&lt;/p&gt;
&lt;a href=&quot;http://www.riaunleashed.com/&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;/images/RIAUnleashed2010s.png&quot; /&gt;&lt;/a&gt;
&lt;p&gt;The conference runs from November 11-12, 2010, in Boston. You can register for just day one for $150, just day two for $50, or both days for the bargain price of $175,
which includes lunch on both days and a party on Thursday night.
Brian is also running a &lt;a href=&quot;http://www.remotesynthesis.com/post.cfm/win-a-free-2-day-pass-to-ria-unleashed-2010&quot; target=&quot;_blank&quot;&gt;contest&lt;/a&gt; which will award 
three lucky winners with a two-day pass to the conference.&lt;/p&gt;
&lt;p&gt;I&apos;ll be teaching a half-day workshop and presenting a session on, you guessed it, ColdFusion ORM. The day one workshop will be a hands-on introduction to ColdFusion ORM,
designed to teach you the basics of working with this powerful new technology. My session on day two is called &quot;What Your Mother Never Told You About ColdFusion ORM&quot;,
and it covers advanced topics that you won&apos;t read about in the ColdFusion documentation. It will be a great follow up for folks who attend the half-day ORM workshop, and
will also be valuable to anyone who&apos;s looked at ColdFusion ORM already.&lt;/p&gt;
&lt;p&gt;I&apos;m really looking forward to attending this conference, and I hope to see some of you there in November.&lt;/p&gt; 
				</description>
				
				<category>Conferences</category>				
				
				<category>CF ORM Integration</category>				
				
				<pubDate>Mon, 16 Aug 2010 11:43:00 -0400</pubDate>
				<guid>http://www.silverwareconsulting.com/index.cfm/2010/8/16/Join-me-at-RIA-Unleashed-in-Boston-to-Learn-about-ColdFusion-ORM</guid>
				
			</item>
			
			<item>
				<title>CFUnited is Almost Here - Learn about Validations and ORM</title>
				<link>http://www.silverwareconsulting.com/index.cfm/2010/7/19/CFUnited-is-Almost-Here--Learn-about-Validations-and-ORM</link>
				<description>
				
				As I&apos;m sure many of you are aware, &lt;a href=&quot;http://cfunited.com&quot; target=&quot;_blank&quot;&gt;the final CFUnited&lt;/a&gt; will be starting in a little over a week. 
Although I did attend a couple of CFUN&apos;s in the past (when they were a one-day event), this will be my first CFUnited, so I&apos;m pretty excited
about it. It will be great to meet even more people than I usually do at other conferences, such as &lt;a href=&quot;http://www.cfobjective.com/&quot; target=&quot;_blank&quot;&gt;cf.Objective()&lt;/a&gt; and &lt;a href=&quot;http://ncdevcon.com/&quot; target=&quot;_blank&quot;&gt;NCDevCon&lt;/a&gt;, and I wanted
to give a final plug to my sessions, as I think they will be of interest to a lot of developers. As well, I&apos;ve made some last minute changes to
both sessions to cover some new material.&lt;/p&gt;
&lt;h3&gt;What Your Mother Never Told You About CF9 ORM&lt;/h3&gt;
&lt;p&gt;The ColdFusion team at Adobe have done an outstanding job with ColdFusion ORM, which now provides ColdFusion developers with access to
&lt;a href=&quot;http://www.hibernate.org/&quot; target=&quot;_blank&quot;&gt;Hibernate&lt;/a&gt;, an enterprise-ready, open source, industry-standard Java ORM. The documentation on how to use CF ORM in the ColdFusion docs is also quite 
good, providing most of what you need to know to make use of the features. The problem, however, is that Hibernate is a pretty complex tool, and in
order to use CF ORM successfully you really need to understand certain things about Hibernate. This session is designed to teach you some of those 
things - it will cover material that is not included in the ColdFusion documentation, but that is essential to understand when working with the ORM.&lt;/p&gt;
&lt;p&gt;Topics covered will include Hibernate Session Management, Understanding Object States, Working with Detached Objects, Concurrency and 
Using a Base Persistent Object. We&apos;ll also be looking at the new Transaction Management model in the recently released ColdFusion 9.0.1.
If you plan on working with CF ORM and are not already familiar with these concepts I think you&apos;ll really benefit from this session. It is,
however, an advanced session, so if you are totally unfamiliar with CF ORM you may find it a bit confusing.&lt;/p&gt;
&lt;p&gt;The session is scheduled for 5:30pm (ouch!) on Wednesday, July 28th.&lt;/p&gt;
&lt;h3&gt;Automagic Validations for ColdFusion Objects&lt;/h3&gt;
&lt;p&gt;This session will provide an overview of, as well as a detailed &lt;em&gt;how-to&lt;/em&gt; about a Validation framework for ColdFusion. The title is
a slight misnomer, as, although the framework was originally written to work inside an object-oriented application, and remains an ideal solution for
that, it has recently been enhanced to work with simple ColdFusion structures as well.  This means that anyone who is looking for a better way of
addressing their validation requirements, both on the client side and on the server side, can now benefit from the framework, even if they are not
using objects.&lt;/p&gt;
&lt;p&gt;The main benefit of the framework is that it will automatically generate all of your client-side and server-side validations for you, from a simple
set of metadata. This frees you from the drudgery of writing similar validation code over and over again, and also eliminates the possibility of adding
bugs into your application via your validation code. The framework, called &lt;em&gt;&lt;a href=&quot;http://www.validatethis.org/&quot; target=&quot;_blank&quot;&gt;ValidateThis&lt;/a&gt;&lt;/em&gt;, is being actively developed by myself and a number of 
other contributors, so not only is it extremely functional and flexible right now, but new features are being added continually. If you are
interested in finding out more about it, including exactly how to implement it in a new or existing application (and it&apos;s dead easy), I encourage
you to attend my session. It will be held at 3:15pm on Friday, July 30th, and is being repeated at 2:45pm on Saturday, July 31st.&lt;/p&gt;
&lt;p&gt;I hope to see you at one, or both, of my sessions. If we haven&apos;t met before please come by and say hi.&lt;/p&gt; 
				</description>
				
				<category>ColdFusion</category>				
				
				<category>CF ORM Integration</category>				
				
				<category>ValidateThis</category>				
				
				<category>CFUnited</category>				
				
				<pubDate>Mon, 19 Jul 2010 09:47:00 -0400</pubDate>
				<guid>http://www.silverwareconsulting.com/index.cfm/2010/7/19/CFUnited-is-Almost-Here--Learn-about-Validations-and-ORM</guid>
				
			</item>
			
			<item>
				<title>ColdFusion 9.0.1 Now Available - With ORM Goodies</title>
				<link>http://www.silverwareconsulting.com/index.cfm/2010/7/13/ColdFusion-901-Now-Available--With-ORM-Goodies</link>
				<description>
				
				ColdFusion 9.0.1 is now available for download at &lt;a href=&quot;http://www.adobe.com/go/getcf901&quot; target=&quot;_blank&quot;&gt;http://www.adobe.com/go/getcf901&lt;/a&gt;,
and, in addition to fixing a number of issues with ColdFusion 9.0, it&apos;s packed full of goodies as well. The details of all the new features
can be found in the &lt;a href=&quot;http://www.adobe.com/support/documentation/en/coldfusion/901/cf901features.pdf&quot; target=&quot;_blank&quot;&gt;New Feature Notes&lt;/a&gt;, 
and the bug fixes and outstanding items can be found in the &lt;a href=&quot;http://www.adobe.com/support/documentation/en/coldfusion/releasenotes.html&quot; target=&quot;_blank&quot;&gt;Release Notes&lt;/a&gt;.
I think my favourite single new feature is the ability to do a &lt;em&gt;for - in&lt;/em&gt; loop with an array, as looping through an array using script has
always been a pain. I&apos;m also very happy with some of the improvements to ORM.
Here&apos;s a high-level summary of the new features, followed by some details on the ORM changes:
&lt;ul&gt;
	&lt;li&gt;&lt;strong&gt;Language enhancements&lt;/strong&gt; - including &lt;em&gt;for-in&lt;/em&gt; loops for arrays.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;New script functions implemented as CFCs&lt;/strong&gt; - including dbinfo, imap, pop, ldap, and feed.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Caching enhancements&lt;/strong&gt; - including the ability to get a handle on the ehCache session.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Support for IIS 7&lt;/strong&gt;&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;ColdFusion Ajax enhancements&lt;/strong&gt; - including updates cfmap, cfgrid, file uploading and JavaScript functions.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;ORM enhancements&lt;/strong&gt; - more details below.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Amazon S3 support&lt;/strong&gt; - the ability to use Amazon S3 storage with most tags and functions that use a file or directory as input or output.&lt;/li&gt;
	&lt;li&gt;Various other enhancements covering areas such as Spreadsheets, AIR Integration, Flash Remoting, Blaze DS, Solr, Logging, Server Monitoring, and more.&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;h3&gt;ORM Enhancements&lt;/h3&gt;
&lt;p&gt;Here&apos;s a summary of the ORM enhancements in ColdFusion 9.0.1, followed by some details about each one:
&lt;ul&gt;
	&lt;li&gt;Support for Multiple Datasources&lt;/li&gt;
	&lt;li&gt;Transaction Management Improvements&lt;/li&gt;
	&lt;li&gt;skipCFCWithError Flag in ormSettings&lt;/li&gt;
	&lt;li&gt;mappedSuperClass Attribute for Components&lt;/li&gt;
	&lt;li&gt;Use EntityNew to Populate a New Entity&lt;/li&gt;
	&lt;li&gt;Support for HQL in cfquery&lt;/li&gt;
&lt;/ul&gt;  [More]
				</description>
				
				<category>ColdFusion</category>				
				
				<category>CF ORM Integration</category>				
				
				<pubDate>Tue, 13 Jul 2010 11:48:00 -0400</pubDate>
				<guid>http://www.silverwareconsulting.com/index.cfm/2010/7/13/ColdFusion-901-Now-Available--With-ORM-Goodies</guid>
				
			</item>
			
			<item>
				<title>I&apos;ll Be Presenting at NCDevcon in May</title>
				<link>http://www.silverwareconsulting.com/index.cfm/2010/4/27/Ill-Be-Presenting-at-NCDevcon-in-May</link>
				<description>
				
				I&apos;m tickled pink to announce that I will be presenting a couple of sessions at the upcoming &lt;a href=&quot;http://ncdevcon.com/&quot; target=&quot;_blank&quot;&gt;NCDevCon&lt;/a&gt;,
dubbed &lt;em&gt;North Carolina&apos;s Premier Web Conference&lt;/em&gt;,
which is being held in beautiful Raleigh, North Carolina on May 22nd and 23rd. 
As I discussed in a &lt;a href=&quot;http://www.silverwareconsulting.com/index.cfm/2010/3/13/CFinNC-is-Dead-Long-Live-NCDevCon&quot;&gt;previous post&lt;/a&gt; 
NCDevCon is being organized by the &lt;a href=&quot;http://tacfug.org/&quot; target=&quot;_blank&quot;&gt;Triangle Area ColdFusion User&apos;s Group&lt;/a&gt;
and is a sequel to the hugely successful and wildly talked about &lt;a href=&quot;http://www.cfinnc.com/&quot; target=&quot;_blank&quot;&gt;CFinNC&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I will be presenting two sessions:
&lt;ul&gt;
	&lt;li&gt;Getting Started with ColdFusion ORM&lt;/li&gt;
	&lt;li&gt;Creating a Twitter / Google Maps Mashup with CF and Open Source Tools&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;The first session is one that I have presented before, but ColdFusion ORM is an important topic and therefore the committee considered it worth presenting again.
The second session will be a fun one. In it I will demonstrate how I used a number of freely available open source tools to generate a Google Map
showing the locations of all of my Twitter friends.  This is a project that I built some time ago, and is currently available 
&lt;a href=&quot;http://www.silverwareconsulting.com/cfTwitMap/&quot; target=&quot;_blank&quot;&gt;via my site&lt;/a&gt;. I&apos;ll be making some updates to it prior to the conference
and my hope is that the session will illustrate two points:
&lt;ol&gt;
	&lt;li&gt;There are pre-existing ColdFusion open source projects that can be used to fulfill many of your application&apos;s requirements.&lt;/li&gt;
	&lt;li&gt;It&apos;s very easy to create something cool using ColdFusion.&lt;/li&gt;
&lt;/ol&gt;
&lt;/p&gt;
&lt;p&gt;The conference itself is still chock full of ColdFusion, Flex and AIR goodness, but also includes a healthy dose of JavaScript, CSS and other web
development topics. The &lt;a href=&quot;http://ncdevcon.com/page.cfm/schedule&quot; target=&quot;_blank&quot;&gt;schedule with a full list of sessions&lt;/a&gt; has been published, 
and it&apos;s top notch. I&apos;m particularly pleased to see some folks whom I met last year presenting this year, 
including &lt;a href=&quot;http://www.cfgothchic.com/blog/&quot; target=&quot;_blank&quot;&gt;Daria Norris&lt;/a&gt; and &lt;a href=&quot;http://www.jimleether.com/&quot; target=&quot;_blank&quot;&gt;Jim Leether&lt;/a&gt;. 
There will also be a number of hands-on ColdFusion sessions for beginners, so if you know someone who would benefit from a bit of a 
ColdFusion kick-start, send them down North Carolina way.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://ncdevcon2010.eventbrite.com/&quot; target=&quot;_blank&quot;&gt;Registration&lt;/a&gt; is open, and, just like last year&apos;s CFinNC, it&apos;s absolutely free.
I hope to see many of you there.&lt;/p&gt; 
				</description>
				
				<category>Conferences</category>				
				
				<category>ColdFusion</category>				
				
				<category>CF ORM Integration</category>				
				
				<category>NCDevCon</category>				
				
				<pubDate>Tue, 27 Apr 2010 10:12:00 -0400</pubDate>
				<guid>http://www.silverwareconsulting.com/index.cfm/2010/4/27/Ill-Be-Presenting-at-NCDevcon-in-May</guid>
				
			</item>
			
			<item>
				<title>Sign Up for ColdFusion ORM Training and Get a Copy of the &quot;Hibernate Bible&quot;</title>
				<link>http://www.silverwareconsulting.com/index.cfm/2010/4/8/Sign-Up-for-ColdFusion-ORM-Training-and-Get-a-Copy-of-the-Hibernate-Bible</link>
				<description>
				
				&lt;a href=&quot;http://www.compoundtheory.com/&quot; target=&quot;_blank&quot;&gt;Mark Mandel&lt;/a&gt;, and I have decided that we&apos;re going to give a copy of the book
&lt;em&gt;&lt;a href=&quot;http://www.manning.com/bauer2/&quot; target=&quot;_blank&quot;&gt;Java Persistence with Hibernate&lt;/a&gt;&lt;/em&gt; to each and every student at our 
&lt;a href=&quot;http://www.ColdFusionORMTraining.com&quot;&gt;&lt;em&gt;Developing Applications with ColdFusion 9 Object Relational Mapping&lt;/em&gt;&lt;/a&gt;
workshop, which is running from May 20-21, 2010 in Minneapolis, MN, which also happens to be the two days
immediately preceding the &lt;a href=&quot;http://www.cfobjective.com/&quot; target=&quot;_blank&quot;&gt;cf.Objective()&lt;/a&gt; conference.&lt;/p&gt;
&lt;p&gt;I&apos;ve discussed this two-day, hands-on workshop at length in a previous blog post, so I won&apos;t repeat myself here, but one of the goals
of the course is to teach you what you need to know about Hibernate to be effective with ColdFusion 9&apos;s ORM features. Although the Adobe 
engineering team have done an excellent job of integrating Hibernate into ColdFusion, it is still essential to understand quite a bit
about Hibernate to make appropriate use of the features. Hibernate is a complex beast, and although we&apos;ll be teaching most of what you&apos;ll 
need to know in the course, it&apos;s always helpful to have a reference manual handy.&lt;/p&gt;
&lt;p&gt;There is a lot about Hibernate that is not covered in
the ColdFusion documentation, and Mark and I both feel that &lt;em&gt;Java Persistence with Hibernate&lt;/em&gt; is the best book 
currently available on the market about Hibernate. We want to arm our students with the tools they&apos;ll need to continue their
ORM education after the workshop, which is why we&apos;ve decided to give a copy of the book to each student.&lt;/p&gt;
&lt;p&gt;There are still spaces available in the class, so if you&apos;d like to become a ColdFusion ORM ninja in just two days, and get a free copy
of the &quot;Hibernate Bible&quot; as well,
&lt;a href=&quot;https://www.bestmeetings.com/registration/cfobjective/cfobjective.cfm&quot; title=&quot;Register&quot; target=&quot;_blank&quot;&gt;sign up today&lt;/a&gt;.&lt;/p&gt; 
				</description>
				
				<category>CF ORM Integration</category>				
				
				<category>cfObjective</category>				
				
				<pubDate>Thu, 08 Apr 2010 08:05:00 -0400</pubDate>
				<guid>http://www.silverwareconsulting.com/index.cfm/2010/4/8/Sign-Up-for-ColdFusion-ORM-Training-and-Get-a-Copy-of-the-Hibernate-Bible</guid>
				
			</item>
			
			<item>
				<title>Managing Bi-directional Relationships in ColdFusion ORM - Array-based Collections Follow-up</title>
				<link>http://www.silverwareconsulting.com/index.cfm/2010/4/2/Managing-Bidirectional-Relationships-in-ColdFusion-ORM--Arraybased-Collections-Followup</link>
				<description>
				
				&lt;a href=&quot;http://www.barneyb.com/barneyblog/&quot; target=&quot;_blank&quot;&gt;Barney Boisvert&lt;/a&gt; made a comment on my 
&lt;a href=&quot;http://www.silverwareconsulting.com/index.cfm/2010/3/29/Managing-Bidirectional-Relationships-in-ColdFusion-ORM--Arraybased-Collections&quot;&gt;last post&lt;/a&gt; on this topic, 
suggesting that a nice way to reduce the amount of code one has to write, and to boost performance, would be to have one side in a 
bi-directional relationship simply delegate to the other side. This way you are only writing the code to do the work in one object, and it
also reduces the number of &lt;em&gt;hasX()&lt;/em&gt; calls.&lt;/p&gt;
&lt;p&gt;I changed my code to try this technique out, and I quite like it. Because the code is slightly different I figured I might as well write
about it here, to keep my posts on this topic up to date.  [More]
				</description>
				
				<category>ColdFusion</category>				
				
				<category>CF ORM Integration</category>				
				
				<pubDate>Fri, 02 Apr 2010 09:01:00 -0400</pubDate>
				<guid>http://www.silverwareconsulting.com/index.cfm/2010/4/2/Managing-Bidirectional-Relationships-in-ColdFusion-ORM--Arraybased-Collections-Followup</guid>
				
			</item>
			
			<item>
				<title>Managing Bi-directional Relationships in ColdFusion ORM - Array-based Collections</title>
				<link>http://www.silverwareconsulting.com/index.cfm/2010/3/29/Managing-Bidirectional-Relationships-in-ColdFusion-ORM--Arraybased-Collections</link>
				<description>
				
				It&apos;s important to know that when you have a bi-directional relationship you should set the relationship on both sides when setting one side. 
There have been a number of discussions about this on the &lt;a href=&quot;http://groups.google.ca/group/cf-orm-dev&quot; target=&quot;_blank&quot;&gt;cf-orm-dev google group&lt;/a&gt;, 
including &lt;a href=&quot;http://groups.google.com/group/cf-orm-dev/browse_thread/thread/86c9a47f95dcba10/74de895df3ad1897&quot; target=&quot;_blank&quot;&gt;this one&lt;/a&gt;
in which &lt;a href=&quot;http://www.barneyb.com/barneyblog/&quot; target=&quot;_blank&quot;&gt;Barney Boisvert&lt;/a&gt; provides a very
good explanation of why this is important. &lt;a href=&quot;http://www.briankotek.com/blog/&quot; target=&quot;_blank&quot;&gt;Brian Kotek&lt;/a&gt; has also written
&lt;a href=&quot;http://www.briankotek.com/blog/index.cfm/2009/12/16/Bidirectional-Association-Management-in-ColdFusion-9-ORM&quot; target=&quot;_blank&quot;&gt;two&lt;/a&gt;
&lt;a href=&quot;http://www.briankotek.com/blog/index.cfm/2009/12/21/More-on-CF9-ORM-Relationships&quot; target=&quot;_blank&quot;&gt;articles&lt;/a&gt;
on the subject in the past. If you&apos;re not already familiar with this topic I suggest you check out those links.&lt;/p&gt;
&lt;p&gt;The general recommendation for addressing this requirement is to override the methods in your objects that set one side of the relationship 
(e.g., setX(), addX() and removeX()) so that they&apos;ll set both sides, rather than just the side of the object that was invoked.
While doing some testing of the new CF9 ORM adapter for Model-Glue along with the new scaffolding mechanism that we&apos;re developing I 
needed to address this issue for a many-to-many bi-directional relationship. I found that there were a few wrinkles that made the task
not quite as straightforward as I has originally imagined, so I figured I should share what I came up with.  [More]
				</description>
				
				<category>ColdFusion</category>				
				
				<category>CF ORM Integration</category>				
				
				<pubDate>Mon, 29 Mar 2010 06:00:00 -0400</pubDate>
				<guid>http://www.silverwareconsulting.com/index.cfm/2010/3/29/Managing-Bidirectional-Relationships-in-ColdFusion-ORM--Arraybased-Collections</guid>
				
			</item>
			
			<item>
				<title>Become a ColdFusion ORM Ninja in Just Two Days!</title>
				<link>http://www.silverwareconsulting.com/index.cfm/2010/3/9/Become-a-ColdFusion-ORM-Ninja-in-Just-Two-Days</link>
				<description>
				
				I&apos;ve mentioned previously that &lt;a href=&quot;http://www.compoundtheory.com/&quot; target=&quot;_blank&quot;&gt;Mark Mandel&lt;/a&gt;, the mastermind behind &lt;a href=&quot;http://www.transfer-orm.com/&quot; target=&quot;_blank&quot;&gt;Transfer ORM&lt;/a&gt;,
&lt;a href=&quot;http://www.compoundtheory.com/?action=javaloader.index&quot; target=&quot;_blank&quot;&gt;JavaLoader&lt;/a&gt;, &lt;a href=&quot;http://www.compoundtheory.com/?action=colddoc.index&quot; target=&quot;_blank&quot;&gt;ColdDoc&lt;/a&gt;,
and now the lead developer of &lt;a href=&quot;http://www.coldspringframework.org/&quot; target=&quot;_blank&quot;&gt;Coldspring&lt;/a&gt;, and I have developed an intensive, two-day, hands-on workshop on ColdFusion&apos;s new ORM features.
We will be delivering that workshop, &lt;a href=&quot;http://www.ColdFusionORMTraining.com&quot;&gt;&lt;em&gt;Developing Applications with ColdFusion 9 Object Relational Mapping&lt;/em&gt;&lt;/a&gt;, 
in Minneapolis, MN on April 20-21, 2010 which are the two days
immediately preceding the &lt;a href=&quot;http://www.cfobjective.com/&quot; target=&quot;_blank&quot;&gt;cf.Objective()&lt;/a&gt; conference.&lt;/p&gt;
&lt;h3&gt;Really? I Can Master ColdFusion ORM in Two Days?&lt;/h3&gt;
&lt;p&gt;You bet you can! This is an extreme hands-on workshop. We won&apos;t be lecturing &lt;em&gt;at&lt;/em&gt; you,
we&apos;ll be working &lt;em&gt;with&lt;/em&gt; you.
For each concept that we cover we&apos;ll be writing code together, both the instructor and the students, working towards building a single, working application.
Then, once we&apos;ve done that together, you&apos;ll be let loose on your own to practice the concepts again on your very own project, which is yet another application which will be built
incrementally using the concepts that you just learned. 
This means you&apos;ll have lots of chances to practice your newfound skills, and, more importantly, to make your own mistakes.
You&apos;ll either figure out how to fix your mistakes yourself, with the help of one of your fellow students, or with the help one of the two instructors.
You&apos;ll &lt;em&gt;learn by doing&lt;/em&gt;, and what&apos;s more, you&apos;ll leave the class with lots of examples of working code that you wrote yourself.&lt;/p&gt;
&lt;p&gt;This is why we say that we can help you master ColdFusion ORM in just two days. Not only will you be ready to start using it in your next project, but you&apos;ll also be in an ideal
position to teach it to your fellow developers.&lt;/p&gt;
&lt;h3&gt;About the Instructors&lt;/h3&gt;
&lt;p&gt;I&apos;ve been working with Transfer ORM for a few years, and have been working with ColdFusion&apos;s ORM integration since early in the product beta. I&apos;ve blogged about it extensively,
delivered a number of one-hour presentations on the subject and have created and regularly contribute to a Google group (&lt;a href=&quot;http://groups.google.ca/group/cf-orm-dev&quot; target=&quot;_blank&quot;&gt;cf-orm-dev&lt;/a&gt;) 
dedicated to discussing some of the more advanced and esoteric topics around ColdFusion&apos;s ORM integration.&lt;/p&gt;
&lt;p&gt;As for Mark, in addition to creating his own ColdFusion-based ORM (Transfer), he&apos;s also worked extensively with Hibernate (the
ORM that is integrated into ColdFusion 9) and is considered by many to be the foremost expert in all things ORM in the ColdFusion community. 
This therefore represents a unique opportunity to learn about this new, exciting and productivity enhancing technology from two people who know it very well, and 
have real-world experience developing with it.&lt;/p&gt; 
&lt;h3&gt;Do I Have to Be an OO Guru to Attend?&lt;/h3&gt;
&lt;p&gt;Definitely not! We assume no prior knowledge of ORMs or Object Oriented programming, and the techniques that we teach can be used, if you wish,
in a totally procedural application. So you neither need to know OO to join in, nor do you need to learn OO in order to use what you learn in your own work (although we would
encourage you to do so). Some experience working with CFCs would be helpful, but we can get you up to speed pretty quickly even if you lack that.&lt;/p&gt;
&lt;h3&gt;Where is the Workshop Being Held?&lt;/h3&gt;
&lt;p&gt;As mentioned above, the workshop is running as a pre-conference training session at cf.Objective(), and
will take place from April 20 - 21, 2010  at the conference hotel, which is the &lt;a href=&quot;http://www.minneapolis.hyatt.com/hyatt/hotels/index.jsp&quot; title=&quot;Hyatt Regency in Minneapolis, MN&quot; target=&quot;_blank&quot;&gt;Hyatt Regency&lt;/a&gt; in Minneapolis, MN.&lt;/p&gt;
&lt;h3&gt;How Much Does it Cost?&lt;/h3&gt;
&lt;p&gt;We have made the early-bird price into a permanent discount, so although the original price was listed at $1200 for the two days you can now enroll for just $1000.&lt;/p&gt;
&lt;h3&gt;How Do I Sign Up?&lt;/h3&gt;
&lt;p&gt;You can register for the training via &lt;a href=&quot;https://www.bestmeetings.com/registration/cfobjective/cfobjective.cfm&quot; title=&quot;Register&quot; target=&quot;_blank&quot;&gt;cf.Objective()&apos;s registration form&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Can Anyone Attend?&lt;/h3&gt;
&lt;p&gt;Although the workshop is being offered as a cf.Objective() pre-Conference class, you don&apos;t have to attend cf.Objective() in order to enroll.
So if you&apos;ve having trouble getting your boss to pony up for a trip to cf.Objective(), perhaps you can convince him or her to at least send you to these
two days of invaluable training.&lt;/p&gt;
&lt;h3&gt;What Topics Will Be Covered?&lt;/h3&gt;
&lt;p&gt;Here&apos;s a summary of the topics that we&apos;ll be covering:&lt;ul&gt;
	&lt;li&gt;Introduction to ORM&lt;/li&gt;
	&lt;li&gt;Introduction to Hibernate&lt;/li&gt;
	&lt;li&gt;Configuring ORM&lt;/li&gt;
	&lt;li&gt;Working with Objects
		&lt;ul&gt;
			&lt;li&gt;Creating an Object&lt;/li&gt;
			&lt;li&gt;Retrieving an Object / Lists of Objects&lt;/li&gt;
			&lt;li&gt;Updating an Object&lt;/li&gt;
			&lt;li&gt;Deleting an Object&lt;/li&gt;
			&lt;li&gt;Arrays of Objects vs. Queries&lt;/li&gt;
		&lt;/ul&gt;
	&lt;/li&gt;
	&lt;li&gt;Mapping Objects
		&lt;ul&gt;
			&lt;li&gt;Ids and Properties&lt;/li&gt;
			&lt;li&gt;Many-to-One Relationships&lt;/li&gt;
			&lt;li&gt;One-to-Many Relationships&lt;/li&gt;
			&lt;li&gt;Many-to-Many Relationships&lt;/li&gt;
			&lt;li&gt;Formulas&lt;/li&gt;
			&lt;li&gt;Collection Mapping&lt;/li&gt;
			&lt;li&gt;Inheritance&lt;/li&gt;
			&lt;li&gt;Cascade Options&lt;/li&gt;
		&lt;/ul&gt;
	&lt;/li&gt;
	&lt;li&gt;Hibernate Internals
		&lt;ul&gt;
			&lt;li&gt;Hibernate Sessions&lt;/li&gt;
			&lt;li&gt;Session Flushing
				&lt;ul&gt;
					&lt;li&gt;How It Works&lt;/li&gt;
					&lt;li&gt;How to Control It&lt;/li&gt;
				&lt;/ul&gt;
			&lt;/li&gt;
			&lt;li&gt;Working with Transactions&lt;/li&gt;
			&lt;li&gt;Hibernate Object State
				&lt;ul&gt;
					&lt;li&gt;Transient, Persistent and Detached&lt;/li&gt;
					&lt;li&gt;How Objects Move between States&lt;/li&gt;			
				&lt;/ul&gt;
			&lt;/li&gt;
		&lt;/ul&gt;
	&lt;/li&gt;
	&lt;li&gt;Lazy Loading
		&lt;ul&gt;
			&lt;li&gt;Overview&lt;/li&gt;
			&lt;li&gt;How it Affects SQL&lt;/li&gt;
			&lt;li&gt;Dealing with Detached Objects&lt;/li&gt;
		&lt;/ul&gt;
	&lt;/li&gt;
	&lt;li&gt;Concurrency&lt;/li&gt;	
	&lt;li&gt;HQL
		&lt;ul&gt;
			&lt;li&gt;What is HQL?&lt;/li&gt;
			&lt;li&gt;Basic Queries&lt;/li&gt;
			&lt;li&gt;Criteria / Parameters&lt;/li&gt;
			&lt;li&gt;Joins&lt;/li&gt;
			&lt;li&gt;Pagination&lt;/li&gt;
			&lt;li&gt;Bulk Updates&lt;/li&gt;
		&lt;/ul&gt;
	&lt;/li&gt;
	&lt;li&gt;Application Architecture
		&lt;ul&gt;
			&lt;li&gt;Using a Service Layer with ORM&lt;/li&gt;
			&lt;li&gt;Using an Abstract Service&lt;/li&gt;
			
		&lt;/ul&gt;
	&lt;/li&gt;
	&lt;li&gt;Caching&lt;/li&gt;
	&lt;li&gt;Event Handling&lt;/li&gt;
	&lt;li&gt;DDL (Database) Generation&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;h3&gt;Truly a Unique Opportunity&lt;/h3&gt;
&lt;p&gt;Although we do have plans to make the course available at other venues in the future, Mark and I live on opposite sides of the planet, and it just so
happens that we&apos;ll both be attending cf.Objective() this year. It&apos;s likely that future classes will feature either Mark or I as instructors, as it&apos;s a rare occurrence
that we&apos;re both in the same place at the same time, so don&apos;t miss this unique opportunity.&lt;/p&gt;
&lt;h3&gt;Looking for More Information?&lt;/h3&gt;
&lt;p&gt;I think I&apos;ve covered most of what you need to know about the course in this post, but if you&apos;re looking for even more information about it please visit our web site
at &lt;a href=&quot;http://www.ColdFusionORMTraining.com&quot;&gt;www.ColdFusionORMTraining.com&lt;/a&gt;.&lt;/p&gt; 
				</description>
				
				<category>ColdFusion</category>				
				
				<category>CF ORM Integration</category>				
				
				<category>cfObjective</category>				
				
				<pubDate>Tue, 09 Mar 2010 11:47:00 -0400</pubDate>
				<guid>http://www.silverwareconsulting.com/index.cfm/2010/3/9/Become-a-ColdFusion-ORM-Ninja-in-Just-Two-Days</guid>
				
			</item>
			
			<item>
				<title>ColdFusion ORM Gotcha - Non-String Struct Collection Keys</title>
				<link>http://www.silverwareconsulting.com/index.cfm/2010/2/8/ColdFusion-ORM-Gotcha--NonString-Struct-Collection-Keys</link>
				<description>
				
				Here&apos;s another tricky issue when working with collections of child objects that are stored as structs. Just like &lt;a href=&quot;http://www.silverwareconsulting.com/index.cfm/2010/1/25/More-Fun-with-ColdFusion-ORM-StructBased-Collections&quot;&gt;last time&lt;/a&gt;, we&apos;ll look at a Department object
with a one-to-many property that holds a collection of Users which is stored as a struct. The difference this time is that we&apos;ll use a numeric property as the key to the struct,
rather than a string property:
&lt;code&gt;component persistent=&quot;true&quot; output=&quot;false&quot; entityname=&quot;Department&quot; {
	property name=&quot;DeptId&quot; fieldtype=&quot;id&quot; generator=&quot;native&quot;;
	property name=&quot;Name&quot;;
	property name=&quot;SIN&quot; ormtype=&quot;int&quot;;
	property name=&quot;Users&quot; fieldtype=&quot;one-to-many&quot; type=&quot;struct&quot;
		cfc=&quot;User&quot; fkcolumn=&quot;DeptId&quot; singularname=&quot;User&quot;
		structkeycolumn=&quot;SIN&quot; structkeytype=&quot;int&quot; cascade=&quot;save-update&quot;;
}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The nice thing about having the collection of Users in a struct is that we can access them individually. For example, if we have a Department object and we know we
want the User in that Department with a SIN of 12345, we could simply write:
&lt;code&gt;Department = entityLoad(&quot;Department&quot;,1);
User = Department.getUsers()[12345];
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;If you&apos;re like me you&apos;d probably think that would work, but it doesn&apos;t.  [More]
				</description>
				
				<category>ColdFusion</category>				
				
				<category>CF ORM Integration</category>				
				
				<pubDate>Mon, 08 Feb 2010 09:22:00 -0400</pubDate>
				<guid>http://www.silverwareconsulting.com/index.cfm/2010/2/8/ColdFusion-ORM-Gotcha--NonString-Struct-Collection-Keys</guid>
				
			</item>
			
			<item>
				<title>Awesome Training Available Before cf.Objective()</title>
				<link>http://www.silverwareconsulting.com/index.cfm/2010/1/25/Awesome-Training-Available-Before-cfObjective</link>
				<description>
				
				As you&apos;re no doubt aware, &lt;a href=&quot;http://www.cfobjective.com/&quot; target=&quot;_blank&quot;&gt;cf.Objective()&lt;/a&gt;, &quot;The World&apos;s Only Enterprise Engineering Conference for ColdFusion Developers&quot;, is
coming to Minneapolis, MN from April 22-24, 2010. It&apos;s an outstanding opportunity to learn a ton of stuff, and to network and socialize with like-minded developers. I am pleased and honoured to be
speaking, twice, for the second year in a row.
What you may not realize, however, is that in the days prior to the conference there is a boatload of training available.&lt;/p&gt;
&lt;h3&gt;Developing Applications with ColdFusion 9 Object Relational Mapping&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;http://www.compoundtheory.com/&quot; target=&quot;_blank&quot;&gt;Mark Mandel&lt;/a&gt; and I will be delivering a comprehensive hands-on workshop
on &lt;a href=&quot;http://www.ColdFusionORMTraining.com&quot;&gt;Developing Applications with ColdFusion 9 Object Relational Mapping&lt;/a&gt; for two whole days, from
April 20-21, and it&apos;s going to be fantastic, if I do say so myself. 
If the new features of ColdFusion&apos;s ORM integration don&apos;t interest you (buy why wouldn&apos;t they?), there are five other choices.&lt;/p&gt;
&lt;h3&gt;Something For Everyone&lt;/h3&gt;
&lt;p&gt;Here&apos;s the full list of all of the courses available:
&lt;ul&gt;
	&lt;li&gt;Building Secure CFML Applications (April 21) - Jason Dean and Pete Freitag&lt;/li&gt;
	&lt;li&gt;Coldbox:100 Training (April 21) - Luis Majano&lt;/li&gt;
	&lt;li&gt;Developing Applications with ColdFusion 9 Object Relational Mapping (ORM) (April 20-21) - Bob Silverberg and Mark Mandel&lt;/li&gt;
	&lt;li&gt;Getting Started with Flex and AIR Development with the Flex SDK (April 21) - John Mason&lt;/li&gt;
	&lt;li&gt;Mach-II and OOP from the Ground Up (April 20-21) - Kurt Weirsma, Peter Farrell and Matt Woodward&lt;/li&gt;
	&lt;li&gt;Rapid Development with Model-Glue 3 (April 20-21) - Dan Wilson and Ezra Parker&lt;/li&gt;
&lt;/ul&gt;&lt;/p&gt;
&lt;p&gt;There really is something for everyone, and the instructors are all top-notch.&lt;/p&gt;
&lt;h3&gt;Anyone Can Attend&lt;/h3&gt;
&lt;p&gt;Something else you might not realize; you don&apos;t have to attend cf.Objective() in order to sign up for and attend a pre-Conference training class. So, if you&apos;ve been hankering to 
learn more about CF9 ORM, application security, ColdBox, Model-Glue, Mach-II, or Flex and AIR development, go for it!&lt;/p&gt;
&lt;h3&gt;The Early-Bird Ends Friday&lt;/h3&gt;
&lt;p&gt;I&apos;ll close with a reminder; the discounted early-bird rates, which apply to both the cf.Objective() conference fee and to most of the pre-conference training sessions, expires this Friday,
January 29th. So why not save some cash and sign up right now? Registration is done via the &lt;a href=&quot;https://www.bestmeetings.com/registration/cfobjective/cfobjective.cfm&quot; target=&quot;_blank&quot;&gt;cf.Objective() registration form&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I hope to see many of you there in April.&lt;/p&gt; 
				</description>
				
				<category>ColdFusion</category>				
				
				<category>CF ORM Integration</category>				
				
				<category>cfObjective</category>				
				
				<pubDate>Mon, 25 Jan 2010 15:44:00 -0400</pubDate>
				<guid>http://www.silverwareconsulting.com/index.cfm/2010/1/25/Awesome-Training-Available-Before-cfObjective</guid>
				
			</item>
			
			<item>
				<title>More Fun with ColdFusion ORM Struct-Based Collections</title>
				<link>http://www.silverwareconsulting.com/index.cfm/2010/1/25/More-Fun-with-ColdFusion-ORM-StructBased-Collections</link>
				<description>
				
				&lt;a href=&quot;http://www.bennadel.com&quot; target=&quot;_blank&quot;&gt;Ben Nadel&lt;/a&gt; asked a question in a comment to my &lt;a href=&quot;http://www.silverwareconsulting.com/index.cfm/2010/1/19/CF9-ORM-Gotcha--Adding-Items-to-a-Struct-Collection&quot;&gt;last post about struct-based collections with ColdFusion ORM&lt;/a&gt;
which I thought was quite interesting and deserved some investigation. To recap the previous post, it simply pointed out that in order to add an object to a struct-based collection, when
calling the add method one must pass both the object to be added to the collection and the key to be used in the struct. This raised a great question from Ben, whom I quote:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Does the ORM system do any validation on the Key that you pass in? Does it affect the way the data is persisted to the database (or will the persistence use the value as defined by the CFProperty structKeyColumn)?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I&apos;d never tested this myself, so I did just that, and what I found was somewhat surprising.  [More]
				</description>
				
				<category>ColdFusion</category>				
				
				<category>CF ORM Integration</category>				
				
				<pubDate>Mon, 25 Jan 2010 07:28:00 -0400</pubDate>
				<guid>http://www.silverwareconsulting.com/index.cfm/2010/1/25/More-Fun-with-ColdFusion-ORM-StructBased-Collections</guid>
				
			</item>
			
			<item>
				<title>CF9 ORM Gotcha - Adding Items to a Struct Collection</title>
				<link>http://www.silverwareconsulting.com/index.cfm/2010/1/19/CF9-ORM-Gotcha--Adding-Items-to-a-Struct-Collection</link>
				<description>
				
				I was just bitten by this one, so I thought I&apos;d quickly blog it to help anyone else who comes across it. 
If you&apos;ve got a one-to-many or a many-to-many property in your ColdFusion ORM entity, and you&apos;ve specified that the collection of objects should be stored as a struct, when
adding an item to that struct you must pass both the key for the item and the item itself into the add method. For example, using the following Department object:
&lt;code&gt;component persistent=&quot;true&quot; output=&quot;false&quot; entityname=&quot;Department&quot; {
	property name=&quot;DeptId&quot; fieldtype=&quot;id&quot; generator=&quot;native&quot;;
	property name=&quot;Name&quot;;
	property name=&quot;Users&quot; fieldtype=&quot;one-to-many&quot; type=&quot;struct&quot;
		cfc=&quot;User&quot; fkcolumn=&quot;DeptId&quot; singularname=&quot;User&quot;
		structkeycolumn=&quot;UserName&quot; structkeytype=&quot;string&quot; cascade=&quot;save-update&quot;;
}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Forgetting that I had to specify the key for the struct as well as the object, my first take at adding a User object to the Department&apos;s collection of Users was something like this:
&lt;code&gt;Department = entityLoad(&quot;Department&quot;,1);
User = new User();
User.setUserName(&quot;Bob&quot;);
Department.addUser(User);
entitySave(Department);&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Unfortunately, this code throws an error stating &quot;The User parameter to the ADDUSER function is required but was not passed in.&quot;
Being a bit dim-witted, I was totally confused by this. &quot;Hey,&quot; I said to my computer, &quot;I know that I&apos;m passing a User object into the method.&quot;
It took me awhile to remember that I had to pass both key to the struct and the User object into the addUser() method. Changing the code to:
&lt;code&gt;Department = entityLoad(&quot;Department&quot;,1);
User = new User();
User.setUserName(&quot;Bob&quot;);
Department.addUser(&quot;Bob&quot;,User);
entitySave(Department);&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Did the trick. So remember:
&lt;ul&gt;
	&lt;li&gt;When adding an item to a collection that is a struct, you must pass both the key to the struct and the object into the add method.&lt;/li&gt;
	&lt;li&gt;You must pass the key to the struct in as the first argument, and the object as the second argument.&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;Conversely, when removing an item from a struct collection using the remove method, you only need specify the key to the struct. I hope this tidbit saves someone else the time that ColdFusion stole from me. ;-)&lt;/p&gt; 
				</description>
				
				<category>CF ORM Integration</category>				
				
				<category>Coldspring</category>				
				
				<pubDate>Tue, 19 Jan 2010 22:50:00 -0400</pubDate>
				<guid>http://www.silverwareconsulting.com/index.cfm/2010/1/19/CF9-ORM-Gotcha--Adding-Items-to-a-Struct-Collection</guid>
				
			</item>
			
			<item>
				<title>Filtering Collections in ColdFusion ORM</title>
				<link>http://www.silverwareconsulting.com/index.cfm/2010/1/19/Filtering-Collections-in-ColdFusion-ORM</link>
				<description>
				
				A &lt;a href=&quot;http://groups.google.com/group/cf-orm-dev/browse_thread/thread/bbfaa2ebaf650a99?hl=en&quot; target=&quot;_blank&quot;&gt;question was asked&lt;/a&gt; 
on the &lt;a href=&quot;http://groups.google.com/group/cf-orm-dev/&quot; target=&quot;_blank&quot;&gt;cf-orm-dev Google Group&lt;/a&gt; about returning just a subset of objects that make up a collection. 
Specifically, the developer had a Page object and a Content object with a many-to-many relationship. A simplified version of the objects is:&lt;/p&gt;
&lt;p&gt;Page.cfc:
&lt;code&gt;component persistent=&quot;true&quot; {
	property name=&quot;pageId&quot; fieldtype=&quot;id&quot; generator=&quot;native&quot;;
	property name=&quot;title&quot;;
	property name=&quot;contents&quot; fieldtype=&quot;many-to-many&quot; cfc=&quot;content&quot;
		singularname=&quot;content&quot; linktable=&quot;page_content&quot;;
}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Content.cfc:
&lt;code&gt;component persistent=&quot;true&quot; {
	property name=&quot;contentId&quot; fieldtype=&quot;id&quot; generator=&quot;native&quot;;
	property name=&quot;column&quot; ormtype=&quot;integer&quot;;
	property name=&quot;pages&quot; fieldtype=&quot;many-to-many&quot; cfc=&quot;page&quot;
		singularname=&quot;page&quot; linktable=&quot;page_content&quot; inverse=&quot;true&quot;;
}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Each Page can have multiple pieces of Content, and each Content block appears in a particular column on that page. Each Page can have multiple Content objects in any given column.
The developer was wondering if he could do something like:
&lt;code&gt;Page = entityLoadByPK(&quot;Page&quot;,1);
column1Contents = Page.getContents({column=1});
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Which would return all of the Content objects assigned to that Page, but only those that are in column 1 (which is a property of the Content object).  [More]
				</description>
				
				<category>ColdFusion</category>				
				
				<category>CF ORM Integration</category>				
				
				<pubDate>Tue, 19 Jan 2010 16:08:00 -0400</pubDate>
				<guid>http://www.silverwareconsulting.com/index.cfm/2010/1/19/Filtering-Collections-in-ColdFusion-ORM</guid>
				
			</item>
			
			<item>
				<title>I&apos;ll Be Presenting at cf.Objective() in April</title>
				<link>http://www.silverwareconsulting.com/index.cfm/2010/1/7/Ill-Be-Presenting-at-cfObjective-in-April</link>
				<description>
				
				I am pleased and honoured to announce that I&apos;ll be presenting at &lt;a href=&quot;http://www.cfobjective.com/&quot; target=&quot;_blank&quot;&gt;cf.Objective()&lt;/a&gt;, billed as the Only Enterprise ColdFusion Conference, which runs from April 22-24 in Minneapolis, MN.
It&apos;s going to be quite the experience for me. Not only am I speaking on two topics (details to follow in a separate post):
&lt;ul&gt;
	&lt;li&gt;Easy and Flexible Validations for Objects&lt;/li&gt;
	&lt;li&gt;What Your Mother Never Told You About CF9 ORM&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;I&apos;m also organizing a &lt;a href=&quot;http://en.wikipedia.org/wiki/Pecha_Kucha&quot; target=&quot;_blank&quot;&gt;Pecha Kucha&lt;/a&gt; Birds of a Feather session (BoF),
during which people will be giving mini-presentations in which they show &lt;a href=&quot;http://www.wired.com/techbiz/media/magazine/15-09/st_pechakucha&quot; target=&quot;_blank&quot;&gt;20 slides for 20 seconds each&lt;/a&gt;. 
I&apos;ve &lt;a href=&quot;http://www.silverwareconsulting.com/index.cfm/2009/12/18/Anyone-Can-Speak-at-cfObjective-for-around-six-minutes&quot;&gt;written about this BoF on my blog previously&lt;/a&gt;,
but I&apos;ll mention again that anyone interested in presenting should leave me a comment on my blog or email me directly at bob dot silverberg at gmail dot com.&lt;/p&gt;
&lt;p&gt;As if that&apos;s not enough, &lt;a href=&quot;http://www.compoundtheory.com/&quot; target=&quot;_blank&quot;&gt;Mark Mandel&lt;/a&gt; and I will be delivering a comprehensive hands-on two-day pre-conference workshop
on Developing Applications with ColdFusion 9 Object Relational Mapping. A separate post with the details of that workshop will follow, but in a nutshell it is designed to give you all
of the information you need to get up and running with ColdFusion 9&apos;s ORM features in your next project.  You&apos;ll write a ton of code, learning the basics as well as best practices
and things to watch out for. I think it&apos;s going to be a lot of fun (in addition to a great learning experience).&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.bestmeetings.com/registration/cfobjective/cfobjective.cfm&quot; target=&quot;_blank&quot;&gt;Registration is now open&lt;/a&gt;,
both for the conference and for the CF9 ORM workshop (you can sign up for it during the conference registration). There is a discounted rate for both the conference and the training
available until January 29th, so you might want to register sooner rather than later.&lt;/p&gt;
&lt;p&gt;I hope to see many of you there in April.&lt;/p&gt; 
				</description>
				
				<category>ColdFusion</category>				
				
				<category>CF ORM Integration</category>				
				
				<category>ValidateThis</category>				
				
				<category>cfObjective</category>				
				
				<category>Presentations</category>				
				
				<pubDate>Thu, 07 Jan 2010 17:37:00 -0400</pubDate>
				<guid>http://www.silverwareconsulting.com/index.cfm/2010/1/7/Ill-Be-Presenting-at-cfObjective-in-April</guid>
				
			</item>
			
			<item>
				<title>CF9 ORM Quick Tip - Removing all items from a collection defined as a structure</title>
				<link>http://www.silverwareconsulting.com/index.cfm/2010/1/6/CF9-ORM-Quick-Tip--Removing-all-items-from-a-collection-defined-as-a-structure</link>
				<description>
				
				I wrote a &lt;a href=&quot;http://www.silverwareconsulting.com/index.cfm/2009/10/13/CF9-ORM-Quick-Tip--Removing-All-Items-from-A-Collection&quot;&gt;ColdFusion ORM Quick Tip awhile back&lt;/a&gt; on removing all items from a collection, which a number of folks were kind enough to comment on and provide even better solutions.
I was recently faced with the same problem, but this time I wanted to remove all items from a collection that was defined as a structure (last time it was an array).
My initial code generated an error, so I had to get creative. I&apos;m putting this out there to see if anyone has any better ideas for doing this.&lt;/p&gt;
&lt;p&gt;For this example, let&apos;s assume we have a User object and a Department object. The User object is defined like this:
&lt;code&gt;component persistent=&quot;true&quot; output=&quot;false&quot; entityname=&quot;User&quot; {
	property name=&quot;UserId&quot; fieldtype=&quot;id&quot; generator=&quot;native&quot;;
	property name=&quot;UserName&quot;;
}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The Department has a collection of Users, like so:
&lt;code&gt;component persistent=&quot;true&quot; output=&quot;false&quot; entityname=&quot;Department&quot; {
	property name=&quot;DeptId&quot; fieldtype=&quot;id&quot; generator=&quot;native&quot;;
	property name=&quot;Name&quot;;
	property name=&quot;Users&quot; fieldtype=&quot;one-to-many&quot; type=&quot;struct&quot;
		cfc=&quot;User&quot; fkcolumn=&quot;DeptId&quot; singularname=&quot;User&quot;
		structkeycolumn=&quot;UserName&quot; structkeytype=&quot;string&quot;;
}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Let&apos;s also say that Department 1 currently has 3 Users assigned to it, call them User1, User2 and User3. Now, we want to write some code that will empty the Department&apos;s collection of Users. 
A first attempt might look something like:
&lt;code&gt;Users = Department.getUsers();
for (user in Users) {
	Department.removeUser(user);
}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Unfortunately, this code throws a &lt;em&gt;java.util.ConcurrentModificationException&lt;/em&gt; error. A bit of &lt;a href=&quot;http://www.google.ca/search?q=java.util.ConcurrentModificationException+HashMap&quot; target=&quot;_blank&quot;&gt;Googling&lt;/a&gt;
led me to believe that this is an issue with the way Hibernate is manipulating the collection, which is a Java HashMap. 
It sounds like when you&apos;re iterating over a HashMap you must ask the iterator to remove an item, rather than removing it yourself.
This sounds like a bug in Hibernate, but I&apos;d be very surprised if there were such an obvious bug in Hibernate, so maybe it has something to do with the way
that Hibernate has been integrated into CF.  Either way, it simply doesn&apos;t work, so I needed to come up with another way of removing all of the items from the collection.
&lt;/p&gt;
&lt;p&gt;As with my last post on the topic, the simplest way to achieve this is to call the setter for the collection and pass in an empty struct:
&lt;code&gt;Department.setUsers({});&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The way that I ended up doing it was to use a while loop, checking whether the collection has any remaining items, and to remove the first item in the collection inside the loop.
It looks like this:
&lt;code&gt;Users = Department.getUsers();
while (Department.hasUser()) {
	user = listFirst(structKeyList(Users));
	Department.removeUser(user);
}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;As discussed in the last post, I prefer the latter approach. The first seems a bit hacky to me, although both of them require that you program to the implementation of the collection 
(you are writing code expecting the collection to be a structure). Also as discussed previously you could make that a bit less painful by moving the code into the actual object itself.
For example, in the Department object, add the following method:
&lt;code&gt;function void removeAllUsers() {
	var Users = this.getUsers();
	while (this.hasUser()) {
		this.removeUser(listFirst(structKeyList(Users)));
	}
}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Now you can call removeAllUsers() from outside of the object (e.g., from a Service) and nothing other than the object will have to know that your collection has been
implemented as a structure.&lt;/p&gt;
&lt;p&gt;What other methods can people think of for achieving this?&lt;/p&gt; 
				</description>
				
				<category>ColdFusion</category>				
				
				<category>CF ORM Integration</category>				
				
				<pubDate>Wed, 06 Jan 2010 11:20:00 -0400</pubDate>
				<guid>http://www.silverwareconsulting.com/index.cfm/2010/1/6/CF9-ORM-Quick-Tip--Removing-all-items-from-a-collection-defined-as-a-structure</guid>
				
			</item>
			</channel></rss>