<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Simon Whatley &#187; object</title>
	<atom:link href="http://www.simonwhatley.co.uk/tag/object/feed" rel="self" type="application/rss+xml" />
	<link>http://www.simonwhatley.co.uk</link>
	<description>The opposite of every great idea is another great idea</description>
	<lastBuildDate>Wed, 02 Nov 2011 09:28:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>ColdFusion ORM Frameworks &amp; Tools</title>
		<link>http://www.simonwhatley.co.uk/coldfusion-orm-frameworks-tools</link>
		<comments>http://www.simonwhatley.co.uk/coldfusion-orm-frameworks-tools#comments</comments>
		<pubDate>Thu, 27 Apr 2006 20:53:05 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Active Record Factory]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[code generation]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[Doug Hughes]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[generation]]></category>
		<category><![CDATA[Hibernate]]></category>
		<category><![CDATA[mapping]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Nicholas Tunney]]></category>
		<category><![CDATA[object]]></category>
		<category><![CDATA[object relational mapping]]></category>
		<category><![CDATA[object-oriented programming]]></category>
		<category><![CDATA[ObjectBreeze]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[ORM]]></category>
		<category><![CDATA[Programmer]]></category>
		<category><![CDATA[Reactor]]></category>
		<category><![CDATA[Reactor Reactor]]></category>
		<category><![CDATA[relational database]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Transfer]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=65</guid>
		<description><![CDATA[Object-Relational Mapping (or ORM), is a programming technique that links databases to object-oriented language concepts, creating (in effect) a "virtual object database". There are both free and commercial packages available that perform object-relational mapping, although some programmers opt to code their own object-relational mapping for their systems.]]></description>
			<content:encoded><![CDATA[<p><strong>Object-Relational Mapping (or ORM)</strong>, is a programming technique that links databases to object-oriented language concepts, creating (in effect) a &#8220;virtual object database.&#8221; There are both free and commercial packages available that perform object-relational mapping, although some programmers opt to code their own object-relational mapping for their systems.</p>
<p>In object-oriented programming, programming objects represent real-world objects. To illustrate, consider the example of an address book, which contains listings of people along with zero or more phone numbers and zero or more addresses. In object-oriented terms this would be represented by a &#8220;person object&#8221; with &#8220;slots&#8221; (fields, members, instance variables etc.) to hold the data that make up this listing: the person&#8217;s name, a list (or array) of phone numbers, and a list of addresses.</p>
<p>The crux of the problem is in translating those objects to forms which can be stored in files or databases, and which can later be retrieved easily while preserving the properties of the objects and their relationships; these objects can then be said to be persistent.</p>
<p>Object-Relational systems attempt to solve this problem by providing libraries of classes which are able to do this mapping automatically. Given a list of tables in the database, and objects in the program, they will automatically map requests from one to the other. Asking a person object for its phone numbers will result in the proper query being created and sent, and the results being &#8220;magically&#8221; translated directly into phone number objects inside the program.</p>
<p>From a programmer&#8217;s perspective, the system looks like a persistent object store. One can create objects and work with them as one would normally, and they automatically end up in the relational database.</p>
<p>A number of ORM frameworks have been created for ColdFusion:</p>
<h2>Reactor</h2>
<p>Reactor, created by Doug Hughes of <a target="_blank" title="Alagad" href="http://www.alagad.com/">Alagad</a> fame, is a very simple <acronym title="Application Program Interface">API</acronym> for ColdFusion which generates and instantiates database abstraction <acronym title="ColdFusion Components">CFCs</acronym> on the fly as needed.</p>
<p><a title="Reactor for ColdFusion" target="_blank" href="http://www.doughughes.net/index.cfm?filter=category&#038;categoryId=30">http://www.doughughes.net/</a></p>
<h2>Arf!</h2>
<p>Active Record Factory (Arf!) is a Rails-style ActiveRecord implementation in ColdFusion.</p>
<p>Below is a list of the basics that Arf! provides:</p>
<ul>
<li>JDBC metadata based reflection:  not database specific</li>
</ul>
<ul>
<li>Creates ActiveRecord <acronym title="Application Program Interface">API</acronym>&#8216;d instances out of <acronym title="ColdFusion Components">CFCs</acronym> that extend a base ActiveRecord component</li>
</ul>
<ul>
<li>Implements hasMany() and belongsTo() methods for establishing Record properties that point to other tables</li>
</ul>
<ul>
<li>Allows for overloading any of the automagically generated methods to add custom business logic</li>
</ul>
<ul>
<li>Automagic methods on Records include GetInstance(), Create(), Read(), Update(), Delete(), Save() [smart create/update], List(orderBy, whereClause), Validate() [does type and length checking], and SetNNN()/GetNNN() methods for each DB column</li>
</ul>
<p><a title="Arf!" target="_blank" href="http://www.clearsoftware.net/index.cfm?mode=cat&#038;catid=4BF355FB-E081-2BAC-691AF2BBF35F5E7C">http://www.clearsoftware.net/</a></p>
<h2>objectBreeze</h2>
<p>Developed by Nicholas Tunney, objectBreeze is an <acronym title="Object-Relational Mapping">ORM</acronym> tool that allows you to interact with your data persistence layer and easily model objects within your ColdFusion applications. With no setup, objectBreeze will instantly create objects directly from your database schema. objectBreeze requires that your table has -a- primary key defined. Currently, objectBreeze works with Microsoft SQL, Oracle, MySQL and PostgreSQL, but other versions are on the way.</p>
<p><a title="objectBreeze" target="_blank" href="http://www.objectbreeze.com/ob/">http://www.objectbreeze.com/ob/</a></p>
<h2>cfcPowerTools</h2>
<p>Batch generation of your data layer objects in minutes.</p>
<p><a title="cfcPowerTools" target="_blank" href="http://cfcpowertools.riaforge.org/">http://cfcpowertools.riaforge.org/</a></p>
<h2>Transfer</h2>
<p>Transfer was built out of a need to speed up the development process that is normally slowed down by the development of Business Objects and Data Access Objects.</p>
<p>Transfer does this through a series of methods, including SQL generation and CFML code generation, that all occur during the run-time process.</p>
<p>All this is configured through a XML file, that maps your object generation back to the tables and columns in your database.</p>
<p><a title="Transfer object Relational Mapping" href="http://www.compoundtheory.com/?action=transfer.index">http://www.compoundtheory.com/</a></p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/coldfusion-orm-frameworks-tools/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

