<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-18095130</id><updated>2011-07-13T18:15:10.358-07:00</updated><title type='text'>Saurondor</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://saurondor.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18095130/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://saurondor.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Gerardo Tasistro</name><uri>http://www.blogger.com/profile/01592286228203662073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/3918/1762/1600/S4300004.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>13</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-18095130.post-8406403956780112353</id><published>2010-01-11T11:42:00.000-08:00</published><updated>2010-01-11T11:58:56.421-08:00</updated><title type='text'>5 Reasons I like ORM</title><content type='html'>&lt;style type="text/css"&gt;  &lt;!--   @page { margin: 0.79in }   P { text-indent: 0.14in; color: #000000; text-align: justify; page-break-before: auto; page-break-after: auto }   P.western { font-family: "Arial", sans-serif }   A:link { so-language: zxx }  --&gt;  &lt;/style&gt;  &lt;p class="western" style="background: rgb(255, 255, 255) none repeat scroll 0% 0%; margin-bottom: 0in; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; font-weight: normal;"&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;ORMs (Object Relational Mapping) tools allow for easy interaction between the objects we program in and the relational databases we store data in. It is customary to create code that handles the database IO by converting between the object model and the RDBMS. This includes code to save, retrieve and update objects. As these objects become more complex more maintenance is required to keep the data access code (usually in the form of a DAO). The addition of a single field can result in modifications across various DAO methods. The issue becomes more complex as you include lists and sets inside your objects. Which need to be stored or retrieved.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="background: rgb(255, 255, 255) none repeat scroll 0% 0%; margin-bottom: 0in; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p class="western" style="background: rgb(255, 255, 255) none repeat scroll 0% 0%; margin-bottom: 0in; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; font-weight: normal;"&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;Hibernate is an ORM implementation that helps simplify a great deal of the repetitive error prone coding processes involved in creating DAOs and accessing RDBMS. By keeping an XML based (or annotation based) mapping between objects and their RDBMS, Hibernate simplifies the coding of data access methods. More so, SQL is no longer used. Instead one speaks HQL, a query language based on the attributes of the objects rather than the fields of the underlying database's tables. &lt;/span&gt;&lt;/span&gt; &lt;/p&gt; &lt;p class="western" style="background: rgb(255, 255, 255) none repeat scroll 0% 0%; margin-bottom: 0in; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p class="western" style="background: rgb(255, 255, 255) none repeat scroll 0% 0%; margin-bottom: 0in; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; font-weight: normal;"&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;I'll go over five points that highlight key benefits in faster more robust development of applications. This isn't a deep tutorial into Hibernate, but rather an overview of the benefits of ORM and their particular implementation in Hibernate. The five points I'll be going over in the upcoming posts will be:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="western" style="background: rgb(255, 255, 255) none repeat scroll 0% 0%; margin-bottom: 0in; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;p class="western" style="background: rgb(255, 255, 255) none repeat scroll 0% 0%; margin-bottom: 0in; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; font-weight: normal;"&gt;  &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;Part 1&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;&lt;p class="western" style="background: rgb(255, 255, 255) none repeat scroll 0% 0%; margin-bottom: 0in; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; font-weight: normal;"&gt;   &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;Easy   configuration. We'll see how little is needed to actually start   working with Hibernate.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/li&gt;&lt;li&gt;&lt;p class="western" style="background: rgb(255, 255, 255) none repeat scroll 0% 0%; margin-bottom: 0in; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; font-weight: normal;"&gt;   &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;Easy to extend   code. We'll see how easy it is to add extra fields and add   relationships to other tables in the form of lists or sets.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;/ul&gt;  &lt;/li&gt;&lt;li&gt;&lt;p class="western" style="background: rgb(255, 255, 255) none repeat scroll 0% 0%; margin-bottom: 0in; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; font-weight: normal;"&gt;  &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;Part 2&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;&lt;p class="western" style="background: rgb(255, 255, 255) none repeat scroll 0% 0%; margin-bottom: 0in; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; font-weight: normal;"&gt;   &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;Easy to query.   We'll see how easy it is to start creating queries and how little   code is needed to obtain a fully populated object in our results.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/li&gt;&lt;li&gt;&lt;p class="western" style="background: rgb(255, 255, 255) none repeat scroll 0% 0%; margin-bottom: 0in; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; font-weight: normal;"&gt;   &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;Easy to create   complex queries. We'll see how easy it is to maintain our queries   as the object becomes more complex.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;/ul&gt;  &lt;/li&gt;&lt;li&gt;&lt;p class="western" style="background: rgb(255, 255, 255) none repeat scroll 0% 0%; margin-bottom: 0in; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; font-weight: normal;"&gt;  &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;Part 3&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;&lt;p class="western" style="background: rgb(255, 255, 255) none repeat scroll 0% 0%; margin-bottom: 0in; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; font-weight: normal;"&gt;   &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;Polymorphism.   Hibernate supports polymorphism and we'll go over basic examples on   how this is handled.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p class="western" style="background: rgb(255, 255, 255) none repeat scroll 0% 0%; margin-bottom: 0in; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p class="western" style="background: rgb(255, 255, 255) none repeat scroll 0% 0%; margin-bottom: 0in; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;&lt;span style="font-weight: normal;"&gt;Why Hibernate? Hibernate is a robust well proven framework that works well with many databases (Oracle, DB2, Microsoft SQL Server, MySQL, PostgreSQL, etc &lt;a href="https://www.hibernate.org/80.html"&gt;https://www.hibernate.org/80.html&lt;/a&gt;) it is also also a framework that works well on Java an .NET. That makes one's expertise in Hibernate usable on two major development platforms. ORMs have been around for quite some time, but in the last couple of years I've seen it rise in popularity (and appear on more job requirements). &lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt; &lt;p class="western" style="background: rgb(255, 255, 255) none repeat scroll 0% 0%; margin-bottom: 0in; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p class="western" style="background: rgb(255, 255, 255) none repeat scroll 0% 0%; margin-bottom: 0in; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; font-weight: normal;"&gt; &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;Ok enough intro. Lets get down to todays points.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;    &lt;style type="text/css"&gt;  &lt;!--   @page { margin: 0.79in }   P { text-indent: 0.14in; color: #000000; text-align: justify; page-break-before: auto; page-break-after: auto }   P.western { font-family: "Arial", sans-serif }   H1.western { font-family: "Arial", sans-serif; font-size: 18pt }   H2.western { font-family: "Arial", sans-serif; font-size: 14pt }  --&gt;  &lt;/style&gt;  &lt;h1 class="western" style="page-break-before: always;"&gt;One&lt;/h1&gt; &lt;p class="western" style="background: rgb(255, 255, 255) none repeat scroll 0% 0%; margin-bottom: 0in; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; font-weight: normal;"&gt; &lt;span style="color:#000000;"&gt;&lt;span style="font-family:Arial, sans-serif;"&gt;Its easy &lt;/span&gt;&lt;/span&gt; &lt;/p&gt; &lt;h2 class="western"&gt;The Underlying Parts&lt;/h2&gt; &lt;p class="western" style="background: rgb(255, 255, 255) none repeat scroll 0% 0%; margin-bottom: 0in; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; font-weight: normal;"&gt; &lt;span style="color:#000000;"&gt;&lt;span style="font-family:Arial, sans-serif;"&gt;There are three elements in Hibernate you need to keep in your mind &lt;/span&gt;&lt;/span&gt; &lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Arial, sans-serif;"&gt;The  session factory. That piece of code that actually hands over a  connection to the database. It delivers a session you can then use  to execute queries.&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Arial, sans-serif;"&gt;The  Hibernate config. An XML file that holds the configuration for  Hibernate to use. It contains information on how to create a  connection (database type, location, username, password) and the  Hibernate mapping files to the classes you wish to save and  retrieve.&lt;/span&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p class="western"&gt;&lt;span style="font-family:Arial, sans-serif;"&gt;The Hibernate  mapping files. A set of XML files that hold the relationship between  class properties and tables. &lt;sup&gt;&lt;span style="font-size:78%;"&gt;(1)&lt;/span&gt;&lt;/sup&gt;&lt;/span&gt;&lt;/p&gt; &lt;/li&gt;&lt;/ul&gt; &lt;p class="western"&gt;&lt;span style="font-family:Arial, sans-serif;"&gt;&lt;span style="font-size:78%;"&gt;&lt;i&gt;(1) Mapping files can be omitted if annotations are use in the source code. In this tutorial we'll use annotations to leverage the full benefits of ORM and minimize coding.&lt;/i&gt;&lt;/span&gt; &lt;/span&gt; &lt;/p&gt; &lt;p class="western"&gt;&lt;span style="font-family:Arial, sans-serif;"&gt;Even though Hibernate is complex. You can get going with understanding three files. The benefits obtained quickly overcame the amount of time spent learning it. &lt;/span&gt; &lt;/p&gt; &lt;h2 class="western"&gt;Starting example&lt;/h2&gt; &lt;p class="western"&gt;&lt;span style="font-family:Arial, sans-serif;"&gt;For our example we want to store data for a game. In this game we have participants and their fleets. Each participant can have a set of fleets at his or her disposal. &lt;/span&gt; &lt;/p&gt; &lt;p class="western"&gt;&lt;span style="font-family:Arial, sans-serif;"&gt;First of all we'll setup the Participant class. We'll start with something very basic. The name and the email. We create our simple bean as shown below and then add an id that will be the primary key in the database. In this case an Integer.&lt;/span&gt;&lt;/p&gt; &lt;p class="western"&gt;&lt;span style="font-family:Arial, sans-serif;"&gt;Once the base Java code is set we'll add the annotations. Annotations allow us to tell Hibernate how to store and retrieve this class. It also allows us to use Hibernate to create the database structure for us. First we add the @Entity followed by the @Table annotation. This indicates that the class will be an entity to store and that it should be stored in the “participants” table. We add the @Id and @GeneratedValue before id. This tells Hibernate that id will be and identifier for the class and that its value will be generated automatically by the underlying database. &lt;/span&gt; &lt;/p&gt; &lt;pre&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Liberation Sans,sans-serif;"&gt;@Entity         &lt;span style="color: rgb(128, 0, 128);"&gt;// tells hibernate this is something it will have to manage&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;@Table(name="participants") &lt;span style="color: rgb(128, 0, 128);"&gt;// tells hibernate which table to use&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;class&lt;/b&gt;&lt;/span&gt; Participant &lt;span style="color: rgb(128, 0, 128);"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 128, 48);"&gt;@&lt;/span&gt;Id&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 128, 48);"&gt;@&lt;/span&gt;GeneratedValue&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;strategy&lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt;GenerationType&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;AUTO&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(187, 121, 119);"&gt;&lt;b&gt;Integer&lt;/b&gt;&lt;/span&gt; id&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(187, 121, 119);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt; name&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(187, 121, 119);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt; email&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(187, 121, 119);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt; getEmail&lt;span style="color: rgb(128, 128, 48);"&gt;()&lt;/span&gt; &lt;span style="color: rgb(128, 0, 128);"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; email&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 128);"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 128);"&gt;/** remaining getters and setters **/&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;p class="western"&gt;&lt;br /&gt;This is the code for the Unit class.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Liberation Sans,sans-serif;"&gt;@Entity&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;@Table(name="units")&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;class&lt;/b&gt;&lt;/span&gt; Unit &lt;span style="color: rgb(128, 0, 128);"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 128, 48);"&gt;@&lt;/span&gt;Id&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 128, 48);"&gt;@&lt;/span&gt;GeneratedValue&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;strategy&lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt;GenerationType&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;AUTO&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(187, 121, 119);"&gt;&lt;b&gt;Integer&lt;/b&gt;&lt;/span&gt; id&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(187, 121, 119);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt; name&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(187, 121, 119);"&gt;&lt;b&gt;Integer&lt;/b&gt;&lt;/span&gt; type&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(187, 121, 119);"&gt;&lt;b&gt;Integer&lt;/b&gt;&lt;/span&gt; getId&lt;span style="color: rgb(128, 128, 48);"&gt;()&lt;/span&gt; &lt;span style="color: rgb(128, 0, 128);"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; id&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 128);"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(187, 121, 119);"&gt;void&lt;/span&gt; setId&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(187, 121, 119);"&gt;&lt;b&gt;Integer&lt;/b&gt;&lt;/span&gt; id&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(128, 0, 128);"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;this&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;id &lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt; id&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 128);"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(187, 121, 119);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt; getName&lt;span style="color: rgb(128, 128, 48);"&gt;()&lt;/span&gt; &lt;span style="color: rgb(128, 0, 128);"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; name&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 128);"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(187, 121, 119);"&gt;void&lt;/span&gt; setName&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(187, 121, 119);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt; name&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(128, 0, 128);"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;this&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;name &lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt; name&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 128);"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(187, 121, 119);"&gt;&lt;b&gt;Integer&lt;/b&gt;&lt;/span&gt; getType&lt;span style="color: rgb(128, 128, 48);"&gt;()&lt;/span&gt; &lt;span style="color: rgb(128, 0, 128);"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; type&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 128);"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(187, 121, 119);"&gt;void&lt;/span&gt; setType&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(187, 121, 119);"&gt;&lt;b&gt;Integer&lt;/b&gt;&lt;/span&gt; type&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(128, 0, 128);"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;this&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;type &lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt; type&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 128);"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;h2 class="western"&gt;&lt;br /&gt;Sample .NET code&lt;/h2&gt;&lt;br /&gt;&lt;p class="western"&gt;Annotations can be used in .NET as well.  The following code exemplifies its usage.&lt;/p&gt;&lt;p class="western"&gt;&lt;span style="font-size:78%;"&gt;Source:&lt;br /&gt;http://nhibernate.sourceforge.net/NHibernateEg/NHibernateEg.Tutorial1A.html#NHibernateEg.Tutorial1A-Configuration&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre style="background: rgb(255, 255, 255) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;    [&lt;/span&gt;NHibernate&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;Mapping&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;Attributes&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;Class&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;Table&lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 230);"&gt;SimpleOrder&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;)]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;class&lt;/b&gt;&lt;/span&gt; Order&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 128);"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 128);"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt; _id &lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt; &lt;span style="color: rgb(0, 140, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 128, 48);"&gt;[&lt;/span&gt;NHibernate&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;Mapping&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;Attributes&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;Id&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;Name&lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 230);"&gt;Id&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;)]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;span style="color: rgb(128, 128, 48);"&gt;[&lt;/span&gt;NHibernate&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;Mapping&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;Attributes&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;Generator&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 140, 0);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;,&lt;/span&gt; Class&lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 230);"&gt;native&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;)]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;virtual&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt; Id&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 128);"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        get &lt;span style="color: rgb(128, 0, 128);"&gt;{&lt;/span&gt; &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; _id&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt; &lt;span style="color: rgb(128, 0, 128);"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 128);"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/span&gt; System&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;DateTime _date &lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt; System&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;DateTime&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;Now&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;string&lt;/b&gt;&lt;/span&gt; _product&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 128, 48);"&gt;[&lt;/span&gt;NHibernate&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;Mapping&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;Attributes&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;Property&lt;span style="color: rgb(128, 128, 48);"&gt;]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;virtual&lt;/b&gt;&lt;/span&gt; System&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;DateTime Date&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 128);"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        get &lt;span style="color: rgb(128, 0, 128);"&gt;{&lt;/span&gt; &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; _date&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt; &lt;span style="color: rgb(128, 0, 128);"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 128);"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 128, 48);"&gt;[&lt;/span&gt;NHibernate&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;Mapping&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;Attributes&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;Property&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;NotNull&lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;true&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;)]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;virtual&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;string&lt;/b&gt;&lt;/span&gt; Product&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 128);"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        get &lt;span style="color: rgb(128, 0, 128);"&gt;{&lt;/span&gt; &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; _product&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt; &lt;span style="color: rgb(128, 0, 128);"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        set &lt;span style="color: rgb(128, 0, 128);"&gt;{&lt;/span&gt; _product &lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt; value&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt; &lt;span style="color: rgb(128, 0, 128);"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 128);"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p class="western"&gt;&lt;br /&gt; &lt;/p&gt;&lt;br /&gt;&lt;p class="western"&gt;Hibernate has a tool called &lt;span style="color: rgb(26, 26, 26);"&gt;&lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;hbm2ddl&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(26, 26, 26);"&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;&lt;span style="font-size:100%;"&gt; that can create the underlying database structure for you. Using this tool with the above annotated classes creates the following database&lt;br /&gt;structure:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;table style="width: 560px; height: 741px;" cellpadding="2" cellspacing="0" border="0"&gt;&lt;br /&gt; &lt;col width="65"&gt;&lt;br /&gt; &lt;col width="118"&gt;&lt;br /&gt; &lt;col width="46"&gt;&lt;br /&gt; &lt;col width="71"&gt;&lt;br /&gt; &lt;col width="66"&gt;&lt;br /&gt; &lt;col width="57"&gt;&lt;br /&gt; &lt;thead&gt;&lt;br /&gt;  &lt;tr&gt;&lt;br /&gt;   &lt;th width="65"&gt;&lt;br /&gt;    &lt;p class="western"&gt;Field&lt;/p&gt;&lt;br /&gt;   &lt;/th&gt;&lt;br /&gt;   &lt;th width="118"&gt;&lt;br /&gt;    &lt;p class="western"&gt;Type&lt;/p&gt;&lt;br /&gt;   &lt;/th&gt;&lt;br /&gt;   &lt;th width="46"&gt;&lt;br /&gt;    &lt;p class="western"&gt;Null&lt;/p&gt;&lt;br /&gt;   &lt;/th&gt;&lt;br /&gt;   &lt;th width="71"&gt;&lt;br /&gt;    &lt;p class="western"&gt;Default&lt;/p&gt;&lt;br /&gt;   &lt;/th&gt;&lt;br /&gt;   &lt;th width="66"&gt;&lt;br /&gt;    &lt;p class="western"&gt;&lt;br /&gt;&lt;br /&gt;    &lt;/p&gt;&lt;br /&gt;   &lt;/th&gt;&lt;br /&gt;   &lt;th width="57"&gt;&lt;br /&gt;    &lt;p class="western"&gt;&lt;br /&gt;&lt;br /&gt;    &lt;/p&gt;&lt;br /&gt;   &lt;/th&gt;&lt;br /&gt;  &lt;/tr&gt;&lt;br /&gt; &lt;/thead&gt;&lt;br /&gt; &lt;tbody&gt;&lt;br /&gt;  &lt;tr&gt;&lt;br /&gt;   &lt;td width="65"&gt;&lt;br /&gt;    &lt;p class="western"&gt;id&lt;br /&gt;    &lt;/p&gt;&lt;br /&gt;   &lt;/td&gt;&lt;br /&gt;   &lt;td width="118"&gt;&lt;br /&gt;    &lt;p class="western"&gt;int(11)&lt;/p&gt;&lt;br /&gt;   &lt;/td&gt;&lt;br /&gt;   &lt;td width="46"&gt;&lt;br /&gt;    &lt;p class="western"&gt;No&lt;/p&gt;&lt;br /&gt;   &lt;/td&gt;&lt;br /&gt;   &lt;td width="71"&gt;&lt;br /&gt;    &lt;p class="western"&gt;&lt;br /&gt;&lt;br /&gt;    &lt;/p&gt;&lt;br /&gt;   &lt;/td&gt;&lt;br /&gt;   &lt;td width="66"&gt;&lt;br /&gt;    &lt;p class="western"&gt;&lt;br /&gt;&lt;br /&gt;    &lt;/p&gt;&lt;br /&gt;   &lt;/td&gt;&lt;br /&gt;   &lt;td width="57"&gt;&lt;br /&gt;    &lt;p class="western"&gt;&lt;br /&gt;&lt;br /&gt;    &lt;/p&gt;&lt;br /&gt;   &lt;/td&gt;&lt;br /&gt;  &lt;/tr&gt;&lt;br /&gt;  &lt;tr&gt;&lt;br /&gt;   &lt;td width="65"&gt;&lt;br /&gt;    &lt;p class="western"&gt;email&lt;br /&gt;    &lt;/p&gt;&lt;br /&gt;   &lt;/td&gt;&lt;br /&gt;   &lt;td width="118"&gt;&lt;br /&gt;    &lt;p class="western"&gt;varchar(255)&lt;/p&gt;&lt;br /&gt;   &lt;/td&gt;&lt;br /&gt;   &lt;td width="46"&gt;&lt;br /&gt;    &lt;p class="western"&gt;Yes&lt;/p&gt;&lt;br /&gt;   &lt;/td&gt;&lt;br /&gt;   &lt;td width="71"&gt;&lt;br /&gt;    &lt;p class="western"&gt;&lt;i&gt;NULL&lt;/i&gt;&lt;/p&gt;&lt;br /&gt;   &lt;/td&gt;&lt;br /&gt;   &lt;td width="66"&gt;&lt;br /&gt;    &lt;p class="western"&gt;&lt;br /&gt;&lt;br /&gt;    &lt;/p&gt;&lt;br /&gt;   &lt;/td&gt;&lt;br /&gt;   &lt;td width="57"&gt;&lt;br /&gt;    &lt;p class="western"&gt;&lt;br /&gt;&lt;br /&gt;    &lt;/p&gt;&lt;br /&gt;   &lt;/td&gt;&lt;br /&gt;  &lt;/tr&gt;&lt;br /&gt;  &lt;tr&gt;&lt;br /&gt;   &lt;td width="65"&gt;&lt;br /&gt;    &lt;p class="western"&gt;name&lt;br /&gt;    &lt;/p&gt;&lt;br /&gt;   &lt;/td&gt;&lt;br /&gt;   &lt;td width="118"&gt;&lt;br /&gt;    &lt;p class="western"&gt;varchar(255)&lt;/p&gt;&lt;br /&gt;   &lt;/td&gt;&lt;br /&gt;   &lt;td width="46"&gt;&lt;br /&gt;    &lt;p class="western"&gt;Yes&lt;/p&gt;&lt;br /&gt;   &lt;/td&gt;&lt;br /&gt;   &lt;td width="71"&gt;&lt;br /&gt;    &lt;p class="western"&gt;&lt;i&gt;NULL&lt;/i&gt;&lt;/p&gt;&lt;br /&gt;   &lt;/td&gt;&lt;br /&gt;   &lt;td width="66"&gt;&lt;br /&gt;    &lt;p class="western"&gt;&lt;br /&gt;&lt;br /&gt;    &lt;/p&gt;&lt;br /&gt;   &lt;/td&gt;&lt;br /&gt;   &lt;td width="57"&gt;&lt;br /&gt;    &lt;p class="western"&gt;&lt;br /&gt;&lt;br /&gt;    &lt;/p&gt;&lt;br /&gt;   &lt;/td&gt;&lt;br /&gt;  &lt;/tr&gt;&lt;br /&gt; &lt;/tbody&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;&lt;h2 class="western"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/h2&gt;&lt;br /&gt;&lt;table cellpadding="2" cellspacing="0" width="566" border="0"&gt;&lt;br /&gt; &lt;col width="95"&gt;&lt;br /&gt; &lt;col width="105"&gt;&lt;br /&gt; &lt;col width="60"&gt;&lt;br /&gt; &lt;col width="290"&gt;&lt;br /&gt; &lt;thead&gt;&lt;br /&gt;  &lt;tr&gt;&lt;br /&gt;   &lt;th width="95"&gt;&lt;br /&gt;    &lt;p class="western"&gt;Field&lt;/p&gt;&lt;br /&gt;   &lt;/th&gt;&lt;br /&gt;   &lt;th width="105"&gt;&lt;br /&gt;    &lt;p class="western"&gt;Type&lt;/p&gt;&lt;br /&gt;   &lt;/th&gt;&lt;br /&gt;   &lt;th width="60"&gt;&lt;br /&gt;    &lt;p class="western"&gt;Null&lt;/p&gt;&lt;br /&gt;   &lt;/th&gt;&lt;br /&gt;   &lt;th width="290"&gt;&lt;br /&gt;    &lt;p class="western"&gt;Default&lt;/p&gt;&lt;br /&gt;   &lt;/th&gt;&lt;br /&gt;  &lt;/tr&gt;&lt;br /&gt; &lt;/thead&gt;&lt;br /&gt; &lt;tbody&gt;&lt;br /&gt;  &lt;tr&gt;&lt;br /&gt;   &lt;td width="95"&gt;&lt;br /&gt;    &lt;p class="western"&gt;id&lt;br /&gt;    &lt;/p&gt;&lt;br /&gt;   &lt;/td&gt;&lt;br /&gt;   &lt;td width="105"&gt;&lt;br /&gt;    &lt;p class="western"&gt;int(11)&lt;/p&gt;&lt;br /&gt;   &lt;/td&gt;&lt;br /&gt;   &lt;td width="60"&gt;&lt;br /&gt;    &lt;p class="western"&gt;No&lt;/p&gt;&lt;br /&gt;   &lt;/td&gt;&lt;br /&gt;   &lt;td width="290"&gt;&lt;br /&gt;    &lt;p class="western"&gt;&lt;br /&gt;&lt;br /&gt;    &lt;/p&gt;&lt;br /&gt;   &lt;/td&gt;&lt;br /&gt;  &lt;/tr&gt;&lt;br /&gt;  &lt;tr&gt;&lt;br /&gt;   &lt;td width="95"&gt;&lt;br /&gt;    &lt;p class="western"&gt;name&lt;br /&gt;    &lt;/p&gt;&lt;br /&gt;   &lt;/td&gt;&lt;br /&gt;   &lt;td width="105"&gt;&lt;br /&gt;    &lt;p class="western"&gt;varchar(255)&lt;/p&gt;&lt;br /&gt;   &lt;/td&gt;&lt;br /&gt;   &lt;td width="60"&gt;&lt;br /&gt;    &lt;p class="western"&gt;Yes&lt;/p&gt;&lt;br /&gt;   &lt;/td&gt;&lt;br /&gt;   &lt;td width="290"&gt;&lt;br /&gt;    &lt;p class="western"&gt;&lt;i&gt;NULL&lt;/i&gt;&lt;/p&gt;&lt;br /&gt;   &lt;/td&gt;&lt;br /&gt;  &lt;/tr&gt;&lt;br /&gt;  &lt;tr&gt;&lt;br /&gt;   &lt;td width="95"&gt;&lt;br /&gt;    &lt;p class="western"&gt;type&lt;br /&gt;    &lt;/p&gt;&lt;br /&gt;   &lt;/td&gt;&lt;br /&gt;   &lt;td width="105"&gt;&lt;br /&gt;    &lt;p class="western"&gt;int(11)&lt;/p&gt;&lt;br /&gt;   &lt;/td&gt;&lt;br /&gt;   &lt;td width="60"&gt;&lt;br /&gt;    &lt;p class="western"&gt;Yes&lt;/p&gt;&lt;br /&gt;   &lt;/td&gt;&lt;br /&gt;   &lt;td width="290"&gt;&lt;br /&gt;    &lt;p class="western"&gt;&lt;i&gt;NULL&lt;/i&gt;&lt;/p&gt;&lt;br /&gt;   &lt;/td&gt;&lt;br /&gt;  &lt;/tr&gt;&lt;br /&gt; &lt;/tbody&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;&lt;h2 class="western"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/h2&gt;&lt;br /&gt;&lt;p class="western"&gt;Hibernate becomes aware of the classes it needs to&lt;br /&gt;manage as well as other configuration parameters through the so&lt;br /&gt;called hibernate configuration file. The following XML file shows the&lt;br /&gt;configuration used in this example. We simply list the classes and&lt;br /&gt;Hibernate handles the rest.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Liberation Sans,sans-serif;"&gt;&lt;span style="color: rgb(0, 74, 67);"&gt;&amp;lt;!DOCTYPE&lt;/span&gt; &lt;span style="color: rgb(0, 74, 67);"&gt;hibernate-configuration&lt;/span&gt; &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;PUBLIC&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 230);"&gt;"-//Hibernate/Hibernate Configuration DTD 3.0//EN"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(0, 0, 230);"&gt;"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"&lt;/span&gt;&lt;span style="color: rgb(0, 74, 67);"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(166, 87, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(95, 80, 53);"&gt;hibernate-configuration&lt;/span&gt;&lt;span style="color: rgb(166, 87, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(166, 87, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(95, 80, 53);"&gt;session-factory&lt;/span&gt;&lt;span style="color: rgb(166, 87, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;span style="color: rgb(166, 87, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(95, 80, 53);"&gt;mapping&lt;/span&gt; &lt;span style="color: rgb(39, 71, 150);"&gt;class&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 230);"&gt;"net.blog.hibernatereasons.model.Participant"&lt;/span&gt;&lt;span style="color: rgb(166, 87, 0);"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;span style="color: rgb(166, 87, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(95, 80, 53);"&gt;mapping&lt;/span&gt; &lt;span style="color: rgb(39, 71, 150);"&gt;class&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 230);"&gt;"net.blog.hibernatereasons.model.Unit"&lt;/span&gt;&lt;span style="color: rgb(166, 87, 0);"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(166, 87, 0);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(95, 80, 53);"&gt;session-factory&lt;/span&gt;&lt;span style="color: rgb(166, 87, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(166, 87, 0);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(95, 80, 53);"&gt;hibernate-configuration&lt;/span&gt;&lt;span style="color: rgb(166, 87, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p class="western"&gt;&lt;br /&gt;The last bit of configuration we need is the SessionFactory. The&lt;br /&gt;session factory handles the sessions to the underlying database and&lt;br /&gt;requires a database connection. Which is provided by a data source.&lt;br /&gt;The following XML shows a common configuration using Spring. Spring&lt;br /&gt;isn't required with Hibernate, but it helps a lot. I'm using it in&lt;br /&gt;this example because it helps by showing in simple XML what would&lt;br /&gt;take lots of code to exemplify. Basically we end up with two objects&lt;br /&gt;one of type DriverManagerDataSource and the other of type&lt;br /&gt;AnnotationSessionFactoryBean (Only the AnnotationSessionFactoryBean&lt;br /&gt;is used in our DAO implementation).&lt;/p&gt;&lt;br /&gt;&lt;p class="western"&gt;By looking at the XML it is easy to identify the&lt;br /&gt;key configuration values used by AnnotationSesionFactoryBean:&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;&lt;p class="western"&gt;One is the datasource. In this case we are&lt;br /&gt; using a simple JDBC datasource, but we could use a container&lt;br /&gt; provided resource (JNDI for example).&lt;/p&gt;&lt;br /&gt; &lt;/li&gt;&lt;li&gt;&lt;p class="western"&gt;The second is the hibernate.cfg.xml file we&lt;br /&gt; saw above. It contains the classes to manage as well as other&lt;br /&gt; configuration settings for Hibernate. In this case we tell it to&lt;br /&gt; find the config file in the classpath.&lt;/p&gt;&lt;br /&gt; &lt;/li&gt;&lt;li&gt;&lt;p class="western"&gt;Finally we need to tell Hibernate what&lt;br /&gt; dialect to use. In this case &lt;span style="color: rgb(0, 0, 0);"&gt;org.hibernate.dialect.MySQLDialect.&lt;br /&gt; This is a really strong point for ORM. Being able to change dialect&lt;br /&gt; really empowers you as a programmer. You no longer need to become&lt;br /&gt; proficient in a particular database. Not that it wouldn't hurt you,&lt;br /&gt; but consider the amount of time you'll spend debugging SQL commands&lt;br /&gt; in a database you're not that good at versus letting Hibernate deal&lt;br /&gt; with that.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="color: rgb(105, 105, 105);"&gt;&lt;span style="font-family:Liberation Sans,sans-serif;"&gt;&amp;lt;!-- Datasource configuration --&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(166, 87, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(95, 80, 53);"&gt;bean&lt;/span&gt; &lt;span style="color: rgb(39, 71, 150);"&gt;id&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 230);"&gt;"dataSource"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;span style="color: rgb(39, 71, 150);"&gt;class&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 230);"&gt;"org.springframework.jdbc.datasource.DriverManagerDataSource"&lt;/span&gt;&lt;span style="color: rgb(166, 87, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;span style="color: rgb(166, 87, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(95, 80, 53);"&gt;property&lt;/span&gt; &lt;span style="color: rgb(39, 71, 150);"&gt;name&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 230);"&gt;"driverClassName"&lt;/span&gt;&lt;span style="color: rgb(166, 87, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;span style="color: rgb(166, 87, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(95, 80, 53);"&gt;value&lt;/span&gt;&lt;span style="color: rgb(166, 87, 0);"&gt;&amp;gt;&lt;/span&gt;com.mysql.jdbc.Driver&lt;span style="color: rgb(166, 87, 0);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(95, 80, 53);"&gt;value&lt;/span&gt;&lt;span style="color: rgb(166, 87, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;span style="color: rgb(166, 87, 0);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(95, 80, 53);"&gt;property&lt;/span&gt;&lt;span style="color: rgb(166, 87, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;span style="color: rgb(166, 87, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(95, 80, 53);"&gt;property&lt;/span&gt; &lt;span style="color: rgb(39, 71, 150);"&gt;name&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 230);"&gt;"url"&lt;/span&gt;&lt;span style="color: rgb(166, 87, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;span style="color: rgb(166, 87, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(95, 80, 53);"&gt;value&lt;/span&gt;&lt;span style="color: rgb(166, 87, 0);"&gt;&amp;gt;&lt;/span&gt;jdbc:mysql://localhost:3306/blogSample&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;span style="color: rgb(166, 87, 0);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(95, 80, 53);"&gt;value&lt;/span&gt;&lt;span style="color: rgb(166, 87, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;span style="color: rgb(166, 87, 0);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(95, 80, 53);"&gt;property&lt;/span&gt;&lt;span style="color: rgb(166, 87, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;span style="color: rgb(166, 87, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(95, 80, 53);"&gt;property&lt;/span&gt; &lt;span style="color: rgb(39, 71, 150);"&gt;name&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 230);"&gt;"username"&lt;/span&gt;&lt;span style="color: rgb(166, 87, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;span style="color: rgb(166, 87, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(95, 80, 53);"&gt;value&lt;/span&gt;&lt;span style="color: rgb(166, 87, 0);"&gt;&amp;gt;&lt;/span&gt;databaseuser&lt;span style="color: rgb(166, 87, 0);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(95, 80, 53);"&gt;value&lt;/span&gt;&lt;span style="color: rgb(166, 87, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;span style="color: rgb(166, 87, 0);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(95, 80, 53);"&gt;property&lt;/span&gt;&lt;span style="color: rgb(166, 87, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;span style="color: rgb(166, 87, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(95, 80, 53);"&gt;property&lt;/span&gt; &lt;span style="color: rgb(39, 71, 150);"&gt;name&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 230);"&gt;"password"&lt;/span&gt;&lt;span style="color: rgb(166, 87, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;span style="color: rgb(166, 87, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(95, 80, 53);"&gt;value&lt;/span&gt;&lt;span style="color: rgb(166, 87, 0);"&gt;&amp;gt;&lt;/span&gt;secret&lt;span style="color: rgb(166, 87, 0);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(95, 80, 53);"&gt;value&lt;/span&gt;&lt;span style="color: rgb(166, 87, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;span style="color: rgb(166, 87, 0);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(95, 80, 53);"&gt;property&lt;/span&gt;&lt;span style="color: rgb(166, 87, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(166, 87, 0);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(95, 80, 53);"&gt;bean&lt;/span&gt;&lt;span style="color: rgb(166, 87, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(105, 105, 105);"&gt;&amp;lt;!-- Hibernate SessionFactory --&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(166, 87, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(95, 80, 53);"&gt;bean&lt;/span&gt; &lt;span style="color: rgb(39, 71, 150);"&gt;id&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 230);"&gt;"sessionFactory"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;span style="color: rgb(39, 71, 150);"&gt;class&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 230);"&gt;"org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"&lt;/span&gt;&lt;span style="color: rgb(166, 87, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;span style="color: rgb(166, 87, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(95, 80, 53);"&gt;property&lt;/span&gt; &lt;span style="color: rgb(39, 71, 150);"&gt;name&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 230);"&gt;"dataSource"&lt;/span&gt; &lt;span style="color: rgb(39, 71, 150);"&gt;ref&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 230);"&gt;"dataSource"&lt;/span&gt; &lt;span style="color: rgb(166, 87, 0);"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;span style="color: rgb(166, 87, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(95, 80, 53);"&gt;property&lt;/span&gt; &lt;span style="color: rgb(39, 71, 150);"&gt;name&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 230);"&gt;"configLocation"&lt;/span&gt; &lt;span style="color: rgb(39, 71, 150);"&gt;value&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 230);"&gt;"classpath:hibernate.cfg.xml"&lt;/span&gt; &lt;span style="color: rgb(166, 87, 0);"&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;span style="color: rgb(166, 87, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(95, 80, 53);"&gt;property&lt;/span&gt; &lt;span style="color: rgb(39, 71, 150);"&gt;name&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 230);"&gt;"hibernateProperties"&lt;/span&gt;&lt;span style="color: rgb(166, 87, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;span style="color: rgb(166, 87, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(95, 80, 53);"&gt;value&lt;/span&gt;&lt;span style="color: rgb(166, 87, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                hibernate.dialect=org.hibernate.dialect.MySQLDialect&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;span style="color: rgb(166, 87, 0);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(95, 80, 53);"&gt;value&lt;/span&gt;&lt;span style="color: rgb(166, 87, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;span style="color: rgb(166, 87, 0);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(95, 80, 53);"&gt;property&lt;/span&gt;&lt;span style="color: rgb(166, 87, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(166, 87, 0);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(95, 80, 53);"&gt;bean&lt;/span&gt;&lt;span style="color: rgb(166, 87, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;An equivalent .NET configuration can be found here: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;http://www.springframework.net/doc-latest/reference/html/orm.html&lt;/span&gt;&lt;/pre&gt;&lt;h1 class="western" style="page-break-before: always;"&gt;&lt;br /&gt;&lt;b&gt;Two&lt;/b&gt;&lt;br /&gt;&lt;/h1&gt;&lt;br /&gt;&lt;p class="western"&gt;&lt;span style="font-family:Liberation Sans,sans-serif;"&gt;Easy to&lt;br /&gt;extend code&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;h2 class="western"&gt;Adding an extra field&lt;/h2&gt;&lt;br /&gt;&lt;p class="western"&gt;&lt;span style="font-family:Liberation Sans,sans-serif;"&gt;One key&lt;br /&gt;benefit of using ORM is the speed at which you can add new features&lt;br /&gt;to your code. Adding an extra field in your class is a simple matter&lt;br /&gt;of adding the field code (declaration and getter/setter pair) and&lt;br /&gt;adding the XML mapping to the underlying table. I'll go over three&lt;br /&gt;quick examples.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;h2 class="western"&gt;Adding a simple property to the class&lt;/h2&gt;&lt;br /&gt;&lt;p class="western"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Lets suppose we now need to&lt;br /&gt;add a nickname to the Participant class. Adding this is as simple as&lt;br /&gt;declaring it.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="western" style="background: rgb(255, 255, 255) none repeat scroll 0% 0%; text-indent: 0in; margin-bottom: 0in; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; page-break-before: auto; page-break-after: auto;" align="LEFT"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre style="background: rgb(255, 255, 255) none repeat scroll 0% 0%; margin-bottom: 0.2in; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(187, 121, 119);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt; nickname&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p class="western"&gt;&lt;br /&gt;Thats it you're done. Hibernate will scan the class and consider the&lt;br /&gt;new field. If you use automatic database generation the corresponding&lt;br /&gt;column will be automatically added. You don't buy it. Let me repost&lt;br /&gt;the whole class just to make it clear:&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Liberation Sans,sans-serif;"&gt;@Entity         &lt;span style="color: rgb(128, 0, 128);"&gt;// tells hibernate this is something it will have to manage&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;@Table(name="participants") &lt;span style="color: rgb(128, 0, 128);"&gt;// tells hibernate which table to use&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;class&lt;/b&gt;&lt;/span&gt; Participant &lt;span style="color: rgb(128, 0, 128);"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 128, 48);"&gt;@&lt;/span&gt;Id&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 128, 48);"&gt;@&lt;/span&gt;GeneratedValue&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;strategy&lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt;GenerationType&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;AUTO&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(187, 121, 119);"&gt;&lt;b&gt;Integer&lt;/b&gt;&lt;/span&gt; id&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(187, 121, 119);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt; name&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(187, 121, 119);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt; email&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt; &lt;/span&gt;&lt;span style="color: rgb(187, 121, 119);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt; &lt;/span&gt;nickname&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(187, 121, 119);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt; getEmail&lt;span style="color: rgb(128, 128, 48);"&gt;()&lt;/span&gt; &lt;span style="color: rgb(128, 0, 128);"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; email&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 128);"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 128);"&gt;/** remaining getters and setters **/&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;br /&gt;Like I said. You're done. In a moment we'll go over the DAO magic&lt;br /&gt;that makes this possible.&lt;/p&gt;&lt;br /&gt;&lt;h2 class="western"&gt;Adding a more complex class as a property&lt;/h2&gt;&lt;br /&gt;&lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Liberation Sans,sans-serif;"&gt;Now&lt;br /&gt;imagine we want to add more information to the class. We realize we&lt;br /&gt;need a telephone and probably some other contact info. We can keep&lt;br /&gt;adding it as properties to the class, but that could be a mess. It's&lt;br /&gt;much better to encapsulate all this in a new class called&lt;br /&gt;ContactInfo. Handling this in Hibernate is pretty easy.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Liberation Sans,sans-serif;"&gt;We&lt;br /&gt;create the ContactInfo class.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;@Embeddable&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;class&lt;/b&gt;&lt;/span&gt; ContactInfo &lt;span style="color: rgb(128, 0, 128);"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(187, 121, 119);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt; email&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(187, 121, 119);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt; telephone&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(187, 121, 119);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt; chat&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(187, 121, 119);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt; getEmail&lt;span style="color: rgb(128, 128, 48);"&gt;()&lt;/span&gt; &lt;span style="color: rgb(128, 0, 128);"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; email&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 128);"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(187, 121, 119);"&gt;void&lt;/span&gt; setEmail&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(187, 121, 119);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt; email&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(128, 0, 128);"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;this&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;email &lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt; email&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 128);"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(187, 121, 119);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt; getTelephone&lt;span style="color: rgb(128, 128, 48);"&gt;()&lt;/span&gt; &lt;span style="color: rgb(128, 0, 128);"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; telephone&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 128);"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(187, 121, 119);"&gt;void&lt;/span&gt; setTelephone&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(187, 121, 119);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt; telephone&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(128, 0, 128);"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;this&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;telephone &lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt; telephone&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 128);"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(187, 121, 119);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt; getChat&lt;span style="color: rgb(128, 128, 48);"&gt;()&lt;/span&gt; &lt;span style="color: rgb(128, 0, 128);"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; chat&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 128);"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(187, 121, 119);"&gt;void&lt;/span&gt; setChat&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(187, 121, 119);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt; chat&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(128, 0, 128);"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;this&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;chat &lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt; chat&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 128);"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;br /&gt;Notice how this class uses the @Embeddable annotation. This tells&lt;br /&gt;Hibernate that this class isn't actually mapped to any particular&lt;br /&gt;table. It will become part of a more complex class which will be then&lt;br /&gt;mapped to a table.&lt;/p&gt;&lt;br /&gt;&lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;span style="font-family:Liberation Sans,sans-serif;"&gt;We&lt;br /&gt;remove the email property from the Participant class and add the&lt;br /&gt;ContactInfo property as shown bellow.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="western" style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;@Entity&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;@Table(name="participants")&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;class&lt;/b&gt;&lt;/span&gt; Participant &lt;span style="color: rgb(128, 0, 128);"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 128, 48);"&gt;@&lt;/span&gt;Id&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 128, 48);"&gt;@&lt;/span&gt;GeneratedValue&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;strategy&lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt;GenerationType&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;AUTO&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(187, 121, 119);"&gt;&lt;b&gt;Integer&lt;/b&gt;&lt;/span&gt; id&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(187, 121, 119);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt; name&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(187, 121, 119);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt; nickname&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/span&gt; ContactInfo contact&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p class="western" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;span style="font-family:Arial,sans-serif;"&gt;And once again we are done.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;h2 class="western"&gt;&lt;span style="font-family:Liberation Sans,sans-serif;"&gt;&lt;b&gt;Adding&lt;br /&gt;a list of objects&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;&lt;br /&gt;&lt;p class="western"&gt;Now we need to add the units that each participant&lt;br /&gt;can control. To make this fun lets imagine they are fleet units like&lt;br /&gt;fighters and bombers and cruisers and what not. Similar to our&lt;br /&gt;Participant class we simple write it out and add the corresponding&lt;br /&gt;annotations just like we did with Participant.&lt;/p&gt;&lt;br /&gt;&lt;pre style="background: rgb(255, 255, 255) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;@Entity&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;@Table(name="units")&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;class&lt;/b&gt;&lt;/span&gt; Unit &lt;span style="color: rgb(128, 0, 128);"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;static&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;final&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(187, 121, 119);"&gt;int&lt;/span&gt; TYPE_CRUISER&lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 140, 0);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;static&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;final&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(187, 121, 119);"&gt;int&lt;/span&gt; TYPE_TRANSPORT&lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 140, 0);"&gt;2&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;static&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;final&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(187, 121, 119);"&gt;int&lt;/span&gt; TYPE_DESTROYER&lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 140, 0);"&gt;3&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;static&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;final&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(187, 121, 119);"&gt;int&lt;/span&gt; TYPE_FIGHTER&lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 140, 0);"&gt;4&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;static&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;final&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(187, 121, 119);"&gt;int&lt;/span&gt; TYPE_BOMBER&lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 140, 0);"&gt;5&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 128, 48);"&gt;@&lt;/span&gt;Id&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 128, 48);"&gt;@&lt;/span&gt;GeneratedValue&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;strategy&lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt;GenerationType&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;AUTO&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(187, 121, 119);"&gt;&lt;b&gt;Integer&lt;/b&gt;&lt;/span&gt; id&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(187, 121, 119);"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/span&gt; name&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(187, 121, 119);"&gt;&lt;b&gt;Integer&lt;/b&gt;&lt;/span&gt; type&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(187, 121, 119);"&gt;&lt;b&gt;Integer&lt;/b&gt;&lt;/span&gt; getId&lt;span style="color: rgb(128, 128, 48);"&gt;()&lt;/span&gt; &lt;span style="color: rgb(128, 0, 128);"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; id&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 128);"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;        /** getters and setters **/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(187, 121, 119);"&gt;void&lt;/span&gt; setType&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(187, 121, 119);"&gt;&lt;b&gt;Integer&lt;/b&gt;&lt;/span&gt; type&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(128, 0, 128);"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;this&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;type &lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt; type&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 128);"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;p class="western"&gt;&lt;br /&gt;We'll start with a very basic way to distinguish one Unit from the&lt;br /&gt;other. A field type will be used. In the next chapter we'll go over&lt;br /&gt;polymorphism and let Hibernate handle this for us automatically.&lt;/p&gt;&lt;br /&gt;&lt;p class="western"&gt;To create the relationship between Participant and&lt;br /&gt;Unit we add the following in the Participant class:&lt;/p&gt;&lt;br /&gt;&lt;pre style="background: rgb(255, 255, 255) none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 128, 48);"&gt;@&lt;/span&gt;OneToMany&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;&lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;cascade&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt;&lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;Cascade&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;&lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 230);"&gt;&lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;ALL&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 230);"&gt;,&lt;/span&gt;&lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;fetch&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt;&lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;FetchType&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;&lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 230);"&gt;&lt;span style="font-family:Monospace;"&gt;&lt;span style="font-size:85%;"&gt;Eager&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 128, 48);"&gt;@&lt;/span&gt;JoinColumn&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;name&lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 230);"&gt;"participantId"&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;    @&lt;/span&gt;OrderBy&lt;span style="color: rgb(128, 128, 48);"&gt;(name=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 230);"&gt;"unitOrder"&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(187, 121, 119);"&gt;&lt;b&gt;List&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Unit&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; units&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;new&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ArrayList&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Unit&lt;/span&gt;&lt;span style="color: rgb(128, 128, 48);"&gt;&amp;gt;()&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;p class="western"&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;This tells Hibernate that Participant has a&lt;br /&gt;list of Unit. In the background Hibernate will add a column to the&lt;br /&gt;units table called participantId that indicates which Participant&lt;br /&gt;said Unit belongs to. The list's order will be kept in a column&lt;br /&gt;called unitOrder. Retrieving the Participant will retrieve the units&lt;br /&gt;list automatically and in the order they were set when it was saved.&lt;br /&gt;The OneToMany annotation has two properties set. One is the cascade,&lt;br /&gt;indicating that unpersisted units must be saved when the participant&lt;br /&gt;is saved and modified units updated. The fetch is set to eager&lt;br /&gt;contrary to lazy. Meaning that not caching will be done in this case.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;h2 class="western"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;The actual DAOs&lt;/span&gt;&lt;/h2&gt;&lt;br /&gt;&lt;p class="western"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Up until now we've been&lt;br /&gt;declaring some classes and adding some extra text in the form of&lt;br /&gt;annotations. But how will this benefit us when we actually have to&lt;br /&gt;retrieve our participants from the database. Lets go over the&lt;br /&gt;implementation of our DAOs to get a quick glimpse of this. A deeper&lt;br /&gt;look into queries will be covered in the second chapter.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="western"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;First we create our&lt;br /&gt;ParticipantDao interface for basic CRUD operations. Always a good&lt;br /&gt;practice if you decide to use something different from ORM in the&lt;br /&gt;future.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;interface&lt;/b&gt;&lt;/span&gt; ParticipantDao &lt;span style="color: rgb(128, 0, 128);"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(187, 121, 119);"&gt;void&lt;/span&gt; save&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;Participant participant&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(187, 121, 119);"&gt;void&lt;/span&gt; update&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;Participant participant&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(187, 121, 119);"&gt;void&lt;/span&gt; delete&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;Participant participant&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    Participant findById&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(187, 121, 119);"&gt;&lt;b&gt;Integer&lt;/b&gt;&lt;/span&gt; id&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;p class="western"&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Then we create our implementation of this&lt;br /&gt;interface. By extending HibernateDaoSupport (a Spring class) we can&lt;br /&gt;encapsulate a great deal of the session and transaction management in&lt;br /&gt;one place. Our implementation is reduced to the following code:&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;class&lt;/b&gt;&lt;/span&gt; ParticipantDaoImpl &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;extends&lt;/b&gt;&lt;/span&gt; HibernateDaoSupport &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;implements&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        ParticipantDao &lt;span style="color: rgb(128, 0, 128);"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(187, 121, 119);"&gt;void&lt;/span&gt; delete&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;Participant participant&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(128, 0, 128);"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        getHibernateTemplate&lt;span style="color: rgb(128, 128, 48);"&gt;().&lt;/span&gt;delete&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;participant&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 128);"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt; Participant findById&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(187, 121, 119);"&gt;&lt;b&gt;Integer&lt;/b&gt;&lt;/span&gt; id&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(128, 0, 128);"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;Participant&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt; getHibernateTemplate&lt;span style="color: rgb(128, 128, 48);"&gt;().&lt;/span&gt;get&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;Participant&lt;span style="color: rgb(128, 128, 48);"&gt;.&lt;/span&gt;class&lt;span style="color: rgb(128, 128, 48);"&gt;,&lt;/span&gt; id&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 128);"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(187, 121, 119);"&gt;void&lt;/span&gt; save&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;Participant participant&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(128, 0, 128);"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        getHibernateTemplate&lt;span style="color: rgb(128, 128, 48);"&gt;().&lt;/span&gt;update&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;participant&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 128);"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 0);"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt; &lt;span style="color: rgb(187, 121, 119);"&gt;void&lt;/span&gt; update&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;Participant participant&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt; &lt;span style="color: rgb(128, 0, 128);"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        getHibernateTemplate&lt;span style="color: rgb(128, 128, 48);"&gt;().&lt;/span&gt;update&lt;span style="color: rgb(128, 128, 48);"&gt;(&lt;/span&gt;participant&lt;span style="color: rgb(128, 128, 48);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;span style="color: rgb(128, 0, 128);"&gt;}&lt;/span&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 128);"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;p class="western"&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Notice how none of the code here has anything&lt;br /&gt;to do with the actual Participant class declaration. All the changes&lt;br /&gt;we did like adding fields, moving the contact information into its&lt;br /&gt;own class and adding the list of units required no modification in&lt;br /&gt;the DAO.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="western"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Take a moment to consider&lt;br /&gt;how work would have grown exponentially as we did the three examples.&lt;br /&gt;Adding an extra property is little work. Just modify the SQL to&lt;br /&gt;include the field. Adding a class to contain contact information and&lt;br /&gt;moving some of the Participant properties into it would have required&lt;br /&gt;a lot more work than just adding an extra property. Remember we need&lt;br /&gt;to modify the insert, update and retrieve queries. It's getting more&lt;br /&gt;complex by the minute.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="western"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;When we get to adding the&lt;br /&gt;units we can see how complex our DAO would have been if we didn't use&lt;br /&gt;ORM. We'd have to get the participant (including the ContactInfo&lt;br /&gt;class in it) then get the units in order and place them inside the&lt;br /&gt;participant object. And we haven't even gotten to saving or updating.&lt;br /&gt;Clearly the time needed for conventional coding and testing of this&lt;br /&gt;code grows exponentially as the classes become more complex. Imagine&lt;br /&gt;the benefits in even more complex data structures!&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;h1 class="western" style="page-break-before: always;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Conclusion&lt;/span&gt;&lt;/h1&gt;&lt;br /&gt;&lt;p class="western"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Overall ORM is a great tool&lt;br /&gt;that greatly simplifies your coding. Not only in terms of what you&lt;br /&gt;have to actually write out, but also in terms of time spent testing.&lt;br /&gt;While it is a lot more application overhead than writing your simple&lt;br /&gt;ODBC/SQL code. But it is also a lot richer in features. It will add&lt;br /&gt;bloat to your application, but counter that with the benefits of a&lt;br /&gt;well developed and proven cache. On one side you have more megs in&lt;br /&gt;size at distribution time. On the other you have a cache that speeds&lt;br /&gt;up your application. Think runtime memory footprint and database&lt;br /&gt;latency.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="western"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Think down the road. How&lt;br /&gt;much time are you saving when you need to make changes to your&lt;br /&gt;application? How much time are you saving when you actually need to&lt;br /&gt;test those changes? Experience in ORM is something you can leverage&lt;br /&gt;across multiple databases. Not once did we see any database specific&lt;br /&gt;code. Through the usage of the the SQL dialect one's experience with&lt;br /&gt;ORM can be easily ported to multiple databases.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="western"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;In my experience the time&lt;br /&gt;spent learning and the initial overhead issues are quickly outweighed&lt;br /&gt;by the benefits down the road. In the next chapter we'll go over&lt;br /&gt;queries. We'll see how they are handled and what benefits we can reap&lt;br /&gt;by using ORM instead of conventional methods.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="western"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18095130-8406403956780112353?l=saurondor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurondor.blogspot.com/feeds/8406403956780112353/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18095130&amp;postID=8406403956780112353' title='40 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18095130/posts/default/8406403956780112353'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18095130/posts/default/8406403956780112353'/><link rel='alternate' type='text/html' href='http://saurondor.blogspot.com/2010/01/5-reasons-i-like-orm.html' title='5 Reasons I like ORM'/><author><name>Gerardo Tasistro</name><uri>http://www.blogger.com/profile/01592286228203662073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/3918/1762/1600/S4300004.jpg'/></author><thr:total>40</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18095130.post-825079514165792053</id><published>2009-08-31T12:34:00.000-07:00</published><updated>2009-08-31T12:41:31.920-07:00</updated><title type='text'>PHP empty loop test</title><content type='html'>&lt;style type="text/css"&gt;  &lt;!--   @page { margin: 0.79in }   P { margin-bottom: 0.08in }   H1 { margin-bottom: 0.08in }   H1.western { font-family: "Liberation Sans", "Arial", sans-serif; font-size: 16pt }   H1.cjk { font-family: "DejaVu Sans"; font-size: 16pt }   H1.ctl { font-family: "DejaVu Sans"; font-size: 16pt }  --&gt;  &lt;/style&gt;  &lt;p style="margin-top: 0.17in; page-break-after: avoid;" align="center"&gt;&lt;span style="font-family:Liberation Sans,Arial,sans-serif;"&gt;&lt;span style="font-size:130%;"&gt;Empty For Loop Test Analysis&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;h1 class="western" style="margin-left: 0.3in; text-indent: -0.3in;"&gt;Objective&lt;/h1&gt; &lt;p style="margin-bottom: 0in;"&gt;Determine the amount of time that is consumed in each part of a for statement given an empty loop.  Under the understanding that a statement such as:&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-size:85%;"&gt;for($i=0;$i&lt;$maxCount;$i++) {&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-size:85%;"&gt;}&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;will do nothing between the braces.  It is our goal to determine the amount of time consumed in each element between the parenthesis.&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;h1 class="western" style="margin-left: 0.3in; text-indent: -0.3in;"&gt;Methodology&lt;/h1&gt; &lt;p style="margin-bottom: 0in;"&gt;The time consumed in a loop for a given value of maxCount can easily be measured making maxCount significantly large and using the system clock to find a time difference between the time stamp prior to the execution and after the execution of the for loop.  Since we can't use the system clock inside the for loop without affecting the for loop's performance we will have to use a system of equations to obtain the values.&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;Given that total time can be approximated by :&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;Ax+By+Cz=T&lt;span style="font-size:78%;"&gt;total&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;Where:&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;x : amount of time that it takes to set $i=0&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;y : amount of time to do the comparison $i&lt;$maxCount&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;z : amount of time to do the increment $i++&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;A : the amount of times $i=0 is executed&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;B : the amount of times the comparison is made&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;C : the amount of times the increment is performed&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;We can set a system of equations like :&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;A&lt;span style="font-size:78%;"&gt;1&lt;/span&gt;x+B&lt;span style="font-size:78%;"&gt;1&lt;/span&gt;y+C&lt;span style="font-size:78%;"&gt;1&lt;/span&gt;z=T&lt;span style="font-size:78%;"&gt;1&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;A&lt;span style="font-size:78%;"&gt;2&lt;/span&gt;x+B&lt;span style="font-size:78%;"&gt;2&lt;/span&gt;y+C&lt;span style="font-size:78%;"&gt;2&lt;/span&gt;z=T&lt;span style="font-size:78%;"&gt;2&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;A&lt;span style="font-size:78%;"&gt;3&lt;/span&gt;x+B&lt;span style="font-size:78%;"&gt;3&lt;/span&gt;y+C&lt;span style="font-size:78%;"&gt;3&lt;/span&gt;z=T&lt;span style="font-size:78%;"&gt;3&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;By performing a set of well crafted tests that change the values for A&lt;span style="font-size:78%;"&gt;n&lt;/span&gt;, B&lt;span style="font-size:78%;"&gt;n&lt;/span&gt; and C&lt;span style="font-size:78%;"&gt;n&lt;/span&gt;.  The system can be solved and the values of x, y and z that satisfy the equations can be obtained.&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;Considering that $i=0 is executed only once and that $maxCount is very large ($maxCount&gt;&gt;1) we can disregard the impact of A&lt;span style="font-size:78%;"&gt;n&lt;/span&gt;x.  Simplifying the equations to:&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;B&lt;span style="font-size:78%;"&gt;1&lt;/span&gt;y+C&lt;span style="font-size:78%;"&gt;1&lt;/span&gt;z=T&lt;span style="font-size:78%;"&gt;1&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;B&lt;span style="font-size:78%;"&gt;2&lt;/span&gt;y+C&lt;span style="font-size:78%;"&gt;2&lt;/span&gt;z=T&lt;span style="font-size:78%;"&gt;2&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-size:100%;"&gt;If we set the value of $maxCount=20 million we can run our first test and complete the first equation:&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-size:100%;"&gt;2E7y+2E7z=T&lt;/span&gt;&lt;span style="font-size:78%;"&gt;1&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-size:100%;"&gt;To obtain our second equation we must modify the loop so there is a difference in the amount of times an operation is performed in comparison to the other.  In this case we do the following:&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-size:85%;"&gt;for($i=0;$i&lt;$maxCount;$i++) {&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-size:85%;"&gt;$i++;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-size:85%;"&gt;$i++;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-size:85%;"&gt;$i++;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-size:85%;"&gt;$i++;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-size:85%;"&gt;$i++;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-size:85%;"&gt;$i++;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-size:85%;"&gt;$i++;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-size:85%;"&gt;$i++;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-size:85%;"&gt;$i++;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-size:85%;"&gt;}&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-size:100%;"&gt;In this example there are ten increments for every comparison.  We now set the value of $maxCount to 200 million.  Since there are ten increments per loop we actually perform only 20 million comparisons.  And equation 2 looks like:&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-size:100%;"&gt;2E7y+2E8z=T&lt;/span&gt;&lt;span style="font-size:78%;"&gt;2&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-size:100%;"&gt;With these two equations it is only a matter of running the tests to obtain the times.&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in; page-break-before: always;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;h1 class="western" style="margin-left: 0.3in; text-indent: -0.3in;"&gt;Test&lt;/h1&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-size:100%;"&gt;Doing a run that repeats each for loop 5 times and average the times we obtain:&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;       &lt;table border="0" cellspacing="0" cols="4" rules="none" frame="void"&gt;  &lt;colgroup&gt;&lt;col width="86"&gt;&lt;col width="86"&gt;&lt;col width="86"&gt;&lt;col width="86"&gt;&lt;/colgroup&gt;  &lt;tbody&gt;   &lt;tr&gt;    &lt;td align="left" width="86" height="17"&gt;&lt;br /&gt;&lt;/td&gt;    &lt;td align="center" width="86"&gt;condition&lt;/td&gt;    &lt;td align="center" width="86"&gt;increment&lt;/td&gt;    &lt;td align="center" width="86"&gt;time&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;    &lt;td align="left" height="17"&gt;Equation 1&lt;/td&gt;    &lt;td sdval="20000000" sdnum="1033;" align="right"&gt;20000000&lt;/td&gt;    &lt;td sdval="20000000" sdnum="1033;" align="right"&gt;20000000&lt;/td&gt;    &lt;td sdval="2.48655776978" sdnum="1033;" align="right"&gt;2.49&lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;    &lt;td align="left" height="17"&gt;Equation 2&lt;/td&gt;    &lt;td sdval="20000000" sdnum="1033;" align="right"&gt;20000000&lt;/td&gt;    &lt;td sdval="200000000" sdnum="1033;" align="right"&gt;200000000&lt;/td&gt;    &lt;td sdval="11.3558539867" sdnum="1033;" align="right"&gt;11.36&lt;/td&gt;   &lt;/tr&gt;  &lt;/tbody&gt; &lt;/table&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-size:100%;"&gt;Solving the equations we obtain the following values for z and y respectively.&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in; font-style: normal; font-weight: normal; text-decoration: none;"&gt; &lt;span style="font-family:Liberation Sans,Arial,sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;Time per increment : 0.0000000492738678717778&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in; font-style: normal; font-weight: normal; text-decoration: none;"&gt; &lt;span style="font-family:Liberation Sans,Arial,sans-serif;"&gt;&lt;span style="font-size:85%;"&gt;Time per comparison:  0.0000000750540206172222&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-size:100%;"&gt;We can observe that it takes less time to increment that to compare.  Based on these results we rewrite the for loop in the following way:&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-size:85%;"&gt;for($i=0;$maxCount-$i;$i++) {&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-size:85%;"&gt;}&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-size:100%;"&gt;Substituting the comparison with a subtraction.  In the understanding that a subtraction resulting in 0 will evaluate to false and break out of the loop.&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;span style="font-size:100%;"&gt;We then run the test again with this change in effect.  The time to run a 20 million iteration loop is reduced from 2.49 to 1.92.  Thats approximately 77% of the original time.  Resulting in nearly a 25% performance boost. &lt;/span&gt; &lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0in;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18095130-825079514165792053?l=saurondor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurondor.blogspot.com/feeds/825079514165792053/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18095130&amp;postID=825079514165792053' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18095130/posts/default/825079514165792053'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18095130/posts/default/825079514165792053'/><link rel='alternate' type='text/html' href='http://saurondor.blogspot.com/2009/08/php-empty-loop-test.html' title='PHP empty loop test'/><author><name>Gerardo Tasistro</name><uri>http://www.blogger.com/profile/01592286228203662073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/3918/1762/1600/S4300004.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18095130.post-5963107388979795462</id><published>2008-03-31T15:35:00.000-07:00</published><updated>2008-04-01T08:40:30.263-07:00</updated><title type='text'>Why OOXML stinks</title><content type='html'>I believe the OOXML standard has nothing to do with "Interoperability".  It has more to do with not loosing clients who ask for a document standard to save their info with.  They will then go to the heads of government and companies and brainwash them into believing they are actually using a standard based format.  Technically they are (ISO approved one), but in truth Microsoft isn't holding a standard even with itself.&lt;br /&gt;&lt;br /&gt;The same elements in a Word document are not represented by the same tags in a Power Point document.  Thus by using OOXML not only do you have to develop a mapping between legacy formats (old Office stuff), but you also have to develop a mapping strategy between content in the same format (XML).  Take for example the following text "The cow jumped over the moon".  I made a text document and a presentation out of that string.  One copy in Open Office using ODF and one with Office 2007 using OOXML. (I have removed the style tags for simplicity)&lt;br /&gt;&lt;br /&gt;The text in the Writer (Open Office Word equivalent) shows up like this:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;&amp;lt;text:p text:style-name="Standard"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255); font-weight: bold;"&gt;  The &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;text:span text:style-name="T1"&amp;gt;&lt;span style="font-weight: bold;"&gt;cow&lt;/span&gt;&amp;lt;/text:span&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;text:span text:style-name="T3"&amp;gt;&lt;span style="font-weight: bold;"&gt;jumped over the&lt;/span&gt;&amp;lt;/text:span&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;text:span text:style-name="T2" /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &lt;span style="font-weight: bold;"&gt;moon &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/text:p&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The same text in a bullet slide in Impress (Open Office Power Point equivalent) shows up like this:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;&amp;lt;text:p text:style-name="P1"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;text:span text:style-name="T1"&amp;gt;&lt;span style="font-weight: bold;"&gt;The&lt;/span&gt;&amp;lt;/text:span&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;text:span text:style-name="T2"&amp;gt;&lt;span style="font-weight: bold;"&gt;cow&lt;/span&gt;&amp;lt;/text:span&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;text:span text:style-name="T3"&amp;gt;&lt;span style="font-weight: bold;"&gt;jumped over the&lt;/span&gt;&amp;lt;/text:span&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;text:span text:style-name="T4" /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;text:span text:style-name="T5"&amp;gt;&lt;span style="font-weight: bold;"&gt;moon&lt;/span&gt;&amp;lt;/text:span&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/text:p&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Pretty similar if you ask me.  I even embedded the text as a simple text overlay in the slide (not as  bulleted text).  The entry looks something like:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;&amp;lt;draw:object xlink:href="./Object 1" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad" /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And going to look into the ./Object 1 data we have:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;&amp;lt;text:p text:style-name="Standard"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255); font-weight: bold;"&gt;  The &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;text:span text:style-name="T1"&amp;gt;&lt;span style="font-weight: bold;"&gt;cow&lt;/span&gt;&amp;lt;/text:span&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;text:span text:style-name="T3"&amp;gt;&lt;span style="font-weight: bold;"&gt;jumped over the&lt;/span&gt;&amp;lt;/text:span&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;text:span text:style-name="T2" /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;&lt;span style="font-weight: bold;"&gt;  moon&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/text:p&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Gosh!!! Just like in Writer!  Must have been because its embedded.&lt;br /&gt;&lt;br /&gt;Now lets try it out with Office 2007.  The text in Word:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;w:p w:rsidR="008A5B24" w:rsidRDefault="008A5B24" w:rsidP="008A5B24"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;w:pPr&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;w:pStyle w:val="NormalWeb" /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;w:spacing w:after="0" /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/w:pPr&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;w:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;w:t xml:space="preserve"&amp;gt;&lt;span style="font-weight: bold;"&gt;The&lt;/span&gt;&amp;lt;/w:t&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/w:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;w:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;w:rPr&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;w:b /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;w:bCs /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/w:rPr&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;w:t xml:space="preserve"&amp;gt;&lt;span style="font-weight: bold;"&gt;cow&lt;/span&gt;&amp;lt;/w:t&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/w:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;w:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;w:rPr&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;w:b /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;w:bCs /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;w:color w:val="FF0000" /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/w:rPr&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;w:t&amp;gt;&lt;span style="font-weight: bold;"&gt;jumped over the&lt;/span&gt;&amp;lt;/w:t&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/w:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;w:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;w:rPr&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;w:color w:val="FF0000" /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/w:rPr&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;w:t xml:space="preserve"&amp;gt;&amp;lt;/w:t&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/w:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;w:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;w:t&amp;gt;&lt;span style="font-weight: bold;"&gt;moon&lt;/span&gt;&amp;lt;/w:t&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/w:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/w:p&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Argghhhhh!!!! Now the same in Power Point:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;&amp;lt;a:p&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;a:rPr lang="es-ES" dirty="0" err="1" smtClean="0" /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;a:t&amp;gt;&lt;span style="font-weight: bold;"&gt;The&lt;/span&gt;&amp;lt;/a:t&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;a:rPr lang="es-ES" dirty="0" smtClean="0" /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;a:t /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;a:rPr lang="es-ES" b="1" dirty="0" err="1" smtClean="0" /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;a:t&amp;gt;&lt;span style="font-weight: bold;"&gt;cow&lt;/span&gt;&amp;lt;/a:t&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;a:rPr lang="es-ES" b="1" dirty="0" smtClean="0" /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;a:t /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;a:rPr lang="es-ES" b="1" dirty="0" err="1" smtClean="0"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;a:solidFill&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;a:srgbClr val="FF0000" /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/a:solidFill&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/a:rPr&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;a:t&amp;gt;&lt;span style="font-weight: bold;"&gt;jumped&lt;/span&gt;&amp;lt;/a:t&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;a:rPr lang="es-ES" b="1" dirty="0" smtClean="0"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;a:solidFill&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;a:srgbClr val="FF0000" /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/a:solidFill&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/a:rPr&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;a:t /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;a:rPr lang="es-ES" b="1" dirty="0" err="1" smtClean="0"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;a:solidFill&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;a:srgbClr val="FF0000" /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/a:solidFill&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/a:rPr&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;a:t&amp;gt;&lt;span style="font-weight: bold;"&gt;over&lt;/span&gt;&amp;lt;/a:t&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;a:rPr lang="es-ES" b="1" dirty="0" smtClean="0"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;a:solidFill&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;a:srgbClr val="FF0000" /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/a:solidFill&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/a:rPr&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;a:t /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;a:rPr lang="es-ES" b="1" dirty="0" err="1" smtClean="0"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;a:solidFill&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;a:srgbClr val="FF0000" /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/a:solidFill&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/a:rPr&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;a:t&amp;gt;&lt;span style="font-weight: bold;"&gt;the&lt;/span&gt;&amp;lt;/a:t&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;a:rPr lang="es-ES" dirty="0" smtClean="0"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;a:solidFill&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;a:srgbClr val="FF0000" /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/a:solidFill&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/a:rPr&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;a:t /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;a:rPr lang="es-ES" dirty="0" err="1" smtClean="0" /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;a:t&amp;gt;&lt;span style="font-weight: bold;"&gt;moon&lt;/span&gt;&amp;lt;/a:t&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;a:endParaRPr lang="es-ES" dirty="0" smtClean="0" /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/a:p&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;a:p&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The embedded text in the Power Point slide is in a:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;&amp;lt;p:sp&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;p:nvSpPr&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;p:cNvPr id="6" name="5 Rectángulo" /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;p:cNvSpPr /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;p:nvPr /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/p:nvSpPr&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;p:spPr&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;a:xfrm&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;a:off x="2963835" y="3244334" /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;a:ext cx="3216330" cy="369332" /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/a:xfrm&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;section and is described as follows:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;&amp;lt;p:txBody&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;a:bodyPr wrap="none"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;a:spAutoFit /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/a:bodyPr&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;a:lstStyle /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;a:p&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;a:rPr lang="es-ES" dirty="0" err="1" smtClean="0" /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;a:t&amp;gt;&lt;span style="font-weight: bold;"&gt;The&lt;/span&gt;&amp;lt;/a:t&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;a:rPr lang="es-ES" dirty="0" smtClean="0" /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;a:t /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;a:rPr lang="es-ES" b="1" dirty="0" err="1" smtClean="0" /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;a:t&amp;gt;&lt;span style="font-weight: bold;"&gt;cow&lt;/span&gt;&amp;lt;/a:t&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;a:rPr lang="es-ES" b="1" dirty="0" smtClean="0" /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;a:t /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;a:rPr lang="es-ES" b="1" dirty="0" err="1" smtClean="0"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;a:solidFill&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;a:srgbClr val="FF0000" /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/a:solidFill&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/a:rPr&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;a:t&amp;gt;&lt;span style="font-weight: bold;"&gt;jumped&lt;/span&gt;&amp;lt;/a:t&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;a:rPr lang="es-ES" b="1" dirty="0" smtClean="0"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;a:solidFill&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;a:srgbClr val="FF0000" /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/a:solidFill&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/a:rPr&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;a:t /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;a:rPr lang="es-ES" b="1" dirty="0" err="1" smtClean="0"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;a:solidFill&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;a:srgbClr val="FF0000" /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/a:solidFill&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/a:rPr&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;a:t&amp;gt;&lt;span style="font-weight: bold;"&gt;over&lt;/span&gt;&amp;lt;/a:t&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;a:rPr lang="es-ES" b="1" dirty="0" smtClean="0"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;a:solidFill&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;a:srgbClr val="FF0000" /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/a:solidFill&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/a:rPr&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;a:t /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;a:rPr lang="es-ES" b="1" dirty="0" err="1" smtClean="0"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;a:solidFill&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;a:srgbClr val="FF0000" /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/a:solidFill&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/a:rPr&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;a:t&amp;gt;&lt;span style="font-weight: bold;"&gt;the&lt;/span&gt;&amp;lt;/a:t&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;a:rPr lang="es-ES" dirty="0" smtClean="0"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;a:solidFill&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;a:srgbClr val="FF0000" /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/a:solidFill&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/a:rPr&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;a:t /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;- &amp;lt;a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;a:rPr lang="es-ES" dirty="0" err="1" smtClean="0" /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;a:t&amp;gt;&lt;span style="font-weight: bold;"&gt;moon&lt;/span&gt;&amp;lt;/a:t&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;a:endParaRPr lang="es-ES" dirty="0" /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/a:p&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;  &amp;lt;/p:txBody&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This clarifies the issue with OOXML beyond all possible zealotry, camping, shilling or in any way unsupported IT fanaticism.  OOXML is sloppy!!  Period.  While ODF uses the same tag "&amp;lt;text:span&amp;gt;" to enclose text in all applications, OOXML uses two different tags.  OOXML also takes more to represent the same.  Notice how each word in OOXML has formatting.  Not only is the formatting repeated because OOXML in Office 2007 fails to use styles, it is repeated in every word.  Even if the word is exactly like the one next to it.&lt;br /&gt;&lt;br /&gt;The string "jumped over the" has the same style and is properly represented in ODF:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Note&lt;/span&gt;: the words have been marked in red to show relative space usage.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&amp;lt;text:span text:style-name="T3"&amp;gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;jumped over the&lt;/span&gt;&amp;lt;/text:span&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Word gets it right.  A rather lengthly format, but all the text enclosed in it:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;- &amp;lt;w:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;- &amp;lt;w:rPr&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  &amp;lt;w:b /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  &amp;lt;w:bCs /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  &amp;lt;w:color w:val="FF0000" /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  &amp;lt;/w:rPr&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  &amp;lt;w:t&amp;gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;jumped over the&lt;/span&gt;&amp;lt;/w:t&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  &amp;lt;/w:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;With a few more characters, but nothing like Power Point which uses format definition tags for &lt;span style="font-weight: bold;"&gt;each one&lt;/span&gt; of the words.  Even when all three words &lt;span style="font-weight: bold;"&gt;have the same exact format&lt;/span&gt;!!!!.  Think about what that does to your file size.  Even though OOXML files are zipped that is some extra overhead that is totally uncalled for.  After all OOXML is not zipped when in your PCs RAM.  Thus consuming one of the most expensive components on your computer.  Take a look a this:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&amp;lt;a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;- &amp;lt;a:rPr lang="es-ES" b="1" dirty="0" err="1" smtClean="0"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;- &amp;lt;a:solidFill&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  &amp;lt;a:srgbClr val="FF0000" /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  &amp;lt;/a:solidFill&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  &amp;lt;/a:rPr&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  &amp;lt;a:t&amp;gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;jumped&lt;/span&gt;&amp;lt;/a:t&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  &amp;lt;/a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;- &amp;lt;a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;- &amp;lt;a:rPr lang="es-ES" b="1" dirty="0" smtClean="0"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;- &amp;lt;a:solidFill&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  &amp;lt;a:srgbClr val="FF0000" /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  &amp;lt;/a:solidFill&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  &amp;lt;/a:rPr&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  &amp;lt;a:t /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  &amp;lt;/a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;- &amp;lt;a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;- &amp;lt;a:rPr lang="es-ES" b="1" dirty="0" err="1" smtClean="0"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;- &amp;lt;a:solidFill&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  &amp;lt;a:srgbClr val="FF0000" /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  &amp;lt;/a:solidFill&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  &amp;lt;/a:rPr&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  &amp;lt;a:t&amp;gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;over&lt;/span&gt;&amp;lt;/a:t&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  &amp;lt;/a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;- &amp;lt;a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;- &amp;lt;a:rPr lang="es-ES" b="1" dirty="0" smtClean="0"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;- &amp;lt;a:solidFill&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  &amp;lt;a:srgbClr val="FF0000" /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  &amp;lt;/a:solidFill&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  &amp;lt;/a:rPr&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  &amp;lt;a:t /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  &amp;lt;/a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;- &amp;lt;a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;- &amp;lt;a:rPr lang="es-ES" b="1" dirty="0" err="1" smtClean="0"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;- &amp;lt;a:solidFill&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  &amp;lt;a:srgbClr val="FF0000" /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  &amp;lt;/a:solidFill&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  &amp;lt;/a:rPr&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  &amp;lt;a:t&amp;gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;the&lt;/span&gt;&amp;lt;/a:t&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  &amp;lt;/a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;- &amp;lt;a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;- &amp;lt;a:rPr lang="es-ES" dirty="0" smtClean="0"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;- &amp;lt;a:solidFill&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  &amp;lt;a:srgbClr val="FF0000" /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  &amp;lt;/a:solidFill&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  &amp;lt;/a:rPr&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  &amp;lt;a:t /&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  &amp;lt;/a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;- &amp;lt;a:r&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This is just ridiculous.  So if you have a hard time convincing someone that OOXML is bad, just show them this.  If they're management ask them if they're willing to pay up for the added implementation cost of handling formats which are not compatible within the same application set (Office 2007).  While ODF only requires you to code once with Office you have to code two different ways of opening files and then some more to "copy paste content" between xml storage.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18095130-5963107388979795462?l=saurondor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurondor.blogspot.com/feeds/5963107388979795462/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18095130&amp;postID=5963107388979795462' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18095130/posts/default/5963107388979795462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18095130/posts/default/5963107388979795462'/><link rel='alternate' type='text/html' href='http://saurondor.blogspot.com/2008/03/why-ooxml-stinks.html' title='Why OOXML stinks'/><author><name>Gerardo Tasistro</name><uri>http://www.blogger.com/profile/01592286228203662073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/3918/1762/1600/S4300004.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18095130.post-561187454393503705</id><published>2008-03-28T23:30:00.000-07:00</published><updated>2008-03-28T23:33:40.395-07:00</updated><title type='text'>Application Stopped Responding</title><content type='html'>Its been a few days already that I've been having the following situation with Windows Vista.  I have an application running.  I close it, be it through the app's window or right clicking on its icon in the task bar (Skype for example) and up comes an error.  Application such and such stopped responding.  Well duhhh I closed it!  Is it only me or is this common?  On top of this a rather time consuming process of figuring out what happen gets fired.  Usually returning with a recommendation only in English.  Good thing I know it, but what about the rest of the world?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18095130-561187454393503705?l=saurondor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurondor.blogspot.com/feeds/561187454393503705/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18095130&amp;postID=561187454393503705' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18095130/posts/default/561187454393503705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18095130/posts/default/561187454393503705'/><link rel='alternate' type='text/html' href='http://saurondor.blogspot.com/2008/03/application-stopped-responding.html' title='Application Stopped Responding'/><author><name>Gerardo Tasistro</name><uri>http://www.blogger.com/profile/01592286228203662073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/3918/1762/1600/S4300004.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18095130.post-2179554595062639521</id><published>2008-03-21T07:57:00.001-07:00</published><updated>2008-03-21T08:00:59.287-07:00</updated><title type='text'>Vista knows better: .filenames not allowed</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_xdFmAyxAzd8/R-PNf9MOL4I/AAAAAAAAABU/DQWVt3Y7UXk/s1600-h/errorFileName.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://3.bp.blogspot.com/_xdFmAyxAzd8/R-PNf9MOL4I/AAAAAAAAABU/DQWVt3Y7UXk/s320/errorFileName.jpg" alt="" id="BLOGGER_PHOTO_ID_5180209945291665282" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Seems Vista knows what is best for me.  Filenames with a dot before them are not allowed.  At least not from the Windows Explorer.  Take a look at the following message.  It reads "You must provide a filename".  Well isn't .mylyn a filename?  How did it end up there in the first place?  Surely Eclipse could write it.  Surely a virus or spyware could write it, but not me!  Hehehe, Vista knows better.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;PS:  I have just rebooted the computer and guess what!  Yup the same broken dialog as I saved the image.  Read the blog below.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18095130-2179554595062639521?l=saurondor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurondor.blogspot.com/feeds/2179554595062639521/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18095130&amp;postID=2179554595062639521' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18095130/posts/default/2179554595062639521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18095130/posts/default/2179554595062639521'/><link rel='alternate' type='text/html' href='http://saurondor.blogspot.com/2008/03/vista-knows-better-filenames-not.html' title='Vista knows better: .filenames not allowed'/><author><name>Gerardo Tasistro</name><uri>http://www.blogger.com/profile/01592286228203662073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/3918/1762/1600/S4300004.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_xdFmAyxAzd8/R-PNf9MOL4I/AAAAAAAAABU/DQWVt3Y7UXk/s72-c/errorFileName.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18095130.post-2684092893863320349</id><published>2007-10-11T10:21:00.000-07:00</published><updated>2007-10-11T10:26:21.405-07:00</updated><title type='text'>I want my free MacBook Pro</title><content type='html'>If you can shill about Windows and get an Acer Ferrari.  Why can't I shill about Apple and get a MacBook Pro.  An MS fan boy once wrote to me saying a MacBook Pro costs more than an Acer Ferrari.  Did he mean I was getting over charged by Apple?  The way I see it is if I'm going to sell my integrity I'm going to do so to the highest bidder.&lt;br /&gt;&lt;br /&gt;Besides the MacBook Pro can legally run Windows Vista Ultimate and the Ferrari can't legally run OS X.  You can't be an MS shill and support IP theft at the same time, can you?  I'm enjoying being an Apple shill already!&lt;br /&gt;&lt;br /&gt;Cheers,&lt;br /&gt;Saurondor&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18095130-2684092893863320349?l=saurondor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurondor.blogspot.com/feeds/2684092893863320349/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18095130&amp;postID=2684092893863320349' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18095130/posts/default/2684092893863320349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18095130/posts/default/2684092893863320349'/><link rel='alternate' type='text/html' href='http://saurondor.blogspot.com/2007/10/i-want-my-free-macbook-pro.html' title='I want my free MacBook Pro'/><author><name>Gerardo Tasistro</name><uri>http://www.blogger.com/profile/01592286228203662073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/3918/1762/1600/S4300004.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18095130.post-601488797464315877</id><published>2007-03-29T13:49:00.000-07:00</published><updated>2007-03-29T14:28:41.493-07:00</updated><title type='text'>Boot Camp and MacVista</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_xdFmAyxAzd8/RgwnLwjGcqI/AAAAAAAAAAs/GcX5X0BdcxI/s1600-h/Picture+6.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://4.bp.blogspot.com/_xdFmAyxAzd8/RgwnLwjGcqI/AAAAAAAAAAs/GcX5X0BdcxI/s320/Picture+6.png" alt="" id="BLOGGER_PHOTO_ID_5047452365339652770" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Well with Mac send Boot Camp out as 1.2 &lt;span style="font-style: italic; font-weight: bold;"&gt;Beta&lt;/span&gt; (beware about the Beta aspect of it).  I guess I have to go out and find a MacBook Pro equivalent at Dell or some other retailer.   I'll post it as soon as I get it and we can look to see if it is cost effective to run Vista on a Mac.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ok here we go.  To those thinking there is real big difference do consider this.&lt;br /&gt;&lt;br /&gt;First comparison goes against the &lt;a href="http://store.apple.com/1-800-MY-APPLE/WebObjects/AppleStore.woa/wa/RSLID?mco=925997E8&amp;nclm=MacBookPro"&gt;MacBook Pro&lt;/a&gt; entry level priced at $1999.00.  Trying to build a Dell with as much similarity as possible I came up with this:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_xdFmAyxAzd8/RgwqgQjGcrI/AAAAAAAAAA0/FmxH0fqi2OQ/s1600-h/Picture+7.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://2.bp.blogspot.com/_xdFmAyxAzd8/RgwqgQjGcrI/AAAAAAAAAA0/FmxH0fqi2OQ/s320/Picture+7.png" alt="" id="BLOGGER_PHOTO_ID_5047456016061854386" border="0" /&gt;&lt;/a&gt;A Dell Latitude D820 with a difference of over 300 bucks cheaper.  But do take in consideration the striked out price of $1,964.  You might also notice the Dell has a 256 Megs of video RAM while the MacBook has only 128 Megs, but the Mac has a dual layer DVD.  Dell doesn't say anything about it so I think is your average DVD burner.  If anybody knows different please let me know.&lt;br /&gt;&lt;br /&gt;If I take the Dell up a bit higher to the level of the 2.33 GHz MacBook then the price spikes up to a wooping 2,000 bucks.  The high end 15" MacBook includes 256 Megs worth of RAM with its video card and 2 Gigs of RAM.  Its resolution is also a bit better than the Dell's WXGA.  With 1440 x 900 pixels&lt;span&gt;&lt;span class="para"&gt; vs &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span class="para"&gt;1280 x 800 pixels for the Dell's. It&lt;br /&gt;is still less than Dell's WSXGA+ &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span class="para"&gt;1680 x 1050 pixels resolution.  So I didn't add $70 to the price.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You can see the final tab here:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_xdFmAyxAzd8/RgwsxQjGcsI/AAAAAAAAAA8/Cmy_ClJfFaA/s1600-h/Picture+8.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://2.bp.blogspot.com/_xdFmAyxAzd8/RgwsxQjGcsI/AAAAAAAAAA8/Cmy_ClJfFaA/s320/Picture+8.png" alt="" id="BLOGGER_PHOTO_ID_5047458507142886082" border="0" /&gt;&lt;/a&gt;It is still 400 bucks cheaper than the $2,499.00 Mac, but the original price was still $2,404.00.  Only $100.00 under the Mac.  If we factor in the retail price of Vista at say $370.00 (amazon.com).  We'll be spending about $750.00 more if we buy the Mac and Vista than if we just buy the Dell.&lt;br /&gt;&lt;br /&gt;Of course given that the Dell won't run OS X.  The other way around would be a whole lot more expensive.  We buy a Dell with Vista at say $1,638.00 and a 13" White MacBook for $1,099.00 for a total of $2,747.00.  On top of that we get to carry two laptops in our suitcase!!!  Wow no savings and double the weight.  Fantastic. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 255, 255);"&gt;PS: I believe the prices I gave for the Dell don't include shipping and might not include taxes either.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18095130-601488797464315877?l=saurondor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.apple.com/macosx/bootcamp/' title='Boot Camp and MacVista'/><link rel='replies' type='application/atom+xml' href='http://saurondor.blogspot.com/feeds/601488797464315877/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18095130&amp;postID=601488797464315877' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18095130/posts/default/601488797464315877'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18095130/posts/default/601488797464315877'/><link rel='alternate' type='text/html' href='http://saurondor.blogspot.com/2007/03/boot-camp-and-macvista.html' title='Boot Camp and MacVista'/><author><name>Gerardo Tasistro</name><uri>http://www.blogger.com/profile/01592286228203662073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/3918/1762/1600/S4300004.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_xdFmAyxAzd8/RgwnLwjGcqI/AAAAAAAAAAs/GcX5X0BdcxI/s72-c/Picture+6.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18095130.post-3752140137011230183</id><published>2007-03-23T19:51:00.000-07:00</published><updated>2007-03-24T12:31:06.837-07:00</updated><title type='text'>Micro blogging or just obnoxious web content</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.twitter.com/"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 320px;" src="http://static.twitter.com/images/twitter.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I just stumbled upon a little service called twitter.  Lets you post what you're doing at any particular moment so everyone can see it.  Is this blogging taken to the extreme?  Or just an obnoxius little trend bound to extinguish itself?&lt;br /&gt;&lt;br /&gt;I created my own little account to see what this is all about.  Will twitter lead us to a zero time between interruptions as this curve shows us???&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://headrush.typepad.com/creating_passionate_users/2006/12/httpwww37signal.html"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_xdFmAyxAzd8/RgV8CbbyRAI/AAAAAAAAAAc/gmoNhUImYlE/s320/twitter-curve.png" alt="" id="BLOGGER_PHOTO_ID_5045575338704389122" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The graph was done by &lt;a href="http://headrush.typepad.com/about.html"&gt;Kathy Sierra&lt;/a&gt;.  By clicking on the graph you can go to her page and read an interesting article on the matter of twitter.  If her name sounds familiar you're probably in to Java.  I've read three of her books and own two of them.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://headrush.typepad.com/images/AboutPage_r2_c6.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://headrush.typepad.com/images/AboutPage_r2_c6.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://headrush.typepad.com/images/AboutPage_r8_c6.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://headrush.typepad.com/images/AboutPage_r8_c6.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To be honest with you my girl friend has the Head First Java one.  I did give it to her as a gift.  Very good and easy to read books.  But all this for a later blog post.&lt;br /&gt;&lt;br /&gt;Getting back to Twitter personally I think I'll just get bored with it and drop it over time.  Have you signed up yet?  What do you think?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18095130-3752140137011230183?l=saurondor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.twitter.com' title='Micro blogging or just obnoxious web content'/><link rel='replies' type='application/atom+xml' href='http://saurondor.blogspot.com/feeds/3752140137011230183/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18095130&amp;postID=3752140137011230183' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18095130/posts/default/3752140137011230183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18095130/posts/default/3752140137011230183'/><link rel='alternate' type='text/html' href='http://saurondor.blogspot.com/2007/03/micro-blogging-or-just-obnoxious-web.html' title='Micro blogging or just obnoxious web content'/><author><name>Gerardo Tasistro</name><uri>http://www.blogger.com/profile/01592286228203662073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/3918/1762/1600/S4300004.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_xdFmAyxAzd8/RgV8CbbyRAI/AAAAAAAAAAc/gmoNhUImYlE/s72-c/twitter-curve.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18095130.post-180766768166507963</id><published>2007-03-22T10:35:00.000-07:00</published><updated>2007-03-22T10:45:50.497-07:00</updated><title type='text'>Mac gets a new friend.</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_xdFmAyxAzd8/RgK_AbbyQ_I/AAAAAAAAAAU/Utk2X2cfsWw/s1600-h/Picture+4.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 156px; height: 180px;" src="http://4.bp.blogspot.com/_xdFmAyxAzd8/RgK_AbbyQ_I/AAAAAAAAAAU/Utk2X2cfsWw/s320/Picture+4.png" alt="" id="BLOGGER_PHOTO_ID_5044804546693579762" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;We all know by now the Mac vs PC adds.  Novell has released a set of adds with Mac's new friend Linux.  And she is hot hot hot.&lt;br /&gt;&lt;br /&gt;Take a look at some of the videos &lt;a href="http://www.novell.com/video/"&gt;here.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Although crafty it still says little of the OS itself.  They should pack more punch.  One just says "Hey I'm here." and the other "Hey I look better.".  I'd like to see more of a feature set and why I should move over.  Apple is good at that talking about device interoperability, security and software support.  Novell should look into that and get on it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;object height="350" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/8LAXg_UmzTY"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/8LAXg_UmzTY" type="application/x-shockwave-flash" wmode="transparent" height="350" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18095130-180766768166507963?l=saurondor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurondor.blogspot.com/feeds/180766768166507963/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18095130&amp;postID=180766768166507963' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18095130/posts/default/180766768166507963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18095130/posts/default/180766768166507963'/><link rel='alternate' type='text/html' href='http://saurondor.blogspot.com/2007/03/mac-gets-new-friend.html' title='Mac gets a new friend.'/><author><name>Gerardo Tasistro</name><uri>http://www.blogger.com/profile/01592286228203662073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/3918/1762/1600/S4300004.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_xdFmAyxAzd8/RgK_AbbyQ_I/AAAAAAAAAAU/Utk2X2cfsWw/s72-c/Picture+4.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18095130.post-4417448772653867766</id><published>2007-03-22T09:44:00.000-07:00</published><updated>2007-03-22T09:54:03.663-07:00</updated><title type='text'>Vista gets A+</title><content type='html'>It seems like our Redmonian friend &lt;a href="http://blogs.csoonline.com/blog/jeff_jones"&gt;Jeff Jones&lt;/a&gt; has issued a report card giving it an A+ on security.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://blogs.zdnet.com/security/images/vista_90_day_security.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 514px; height: 340px;" src="http://blogs.zdnet.com/security/images/vista_90_day_security.PNG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;To me it means one thing. Vista had about a fourth to a third of XP's vulnerability count in its first 90 days. Even though this nice little graph tells us Microsoft products are better than all their competitor's in their first 90 days.  We all know how bad XP did security wise after its first 90 days and up to SP2.  So a 25 to 33 % of that record is still pretty darn bad if you ask me. &lt;br /&gt;&lt;br /&gt;How has Vista worked for you?  Any unbreakable apps breaking up for no known reason?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18095130-4417448772653867766?l=saurondor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurondor.blogspot.com/feeds/4417448772653867766/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18095130&amp;postID=4417448772653867766' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18095130/posts/default/4417448772653867766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18095130/posts/default/4417448772653867766'/><link rel='alternate' type='text/html' href='http://saurondor.blogspot.com/2007/03/vista-gets.html' title='Vista gets A+'/><author><name>Gerardo Tasistro</name><uri>http://www.blogger.com/profile/01592286228203662073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/3918/1762/1600/S4300004.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18095130.post-244753323011970057</id><published>2007-03-22T07:14:00.000-07:00</published><updated>2007-03-22T08:45:00.399-07:00</updated><title type='text'>Why spend 2000 bucks on a Mac</title><content type='html'>Well this is the loudest comment against Mac I've heard recently.  It seems everyone is looking at the high end Macs and saying woo woo woo don't buy that.  Too expensive.  Well I'm sure an Acer Ferrari is also outside their budget.  But it is a heck of a machine.&lt;br /&gt;&lt;br /&gt;Getting down to earth and back to matters I did a quick review today of a Dell Latitude D820 vs an Apple MacBook.  You know the entry level white one.&lt;br /&gt;&lt;table&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Dell&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;Apple Mac Book&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Intel® Core™ 2 Duo T5600 (1.83GHz) 2M L2 Cache, 667Mhz Dual Core&lt;td&gt;1.83GHz Intel Core 2 Duo&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Genuine Windows® XP Professional, SP2, with media&lt;td&gt;Mac OS X&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;15.4 inch Wide Screen WXGA LCD Panel&lt;td&gt;13.3-inch (viewable) glossy widescreen&lt;br /&gt;1280 x 800 pixels&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;1.0GB, DDR2-533 SDRAM, 2 DIMMS&lt;td&gt;1GB 667 DDR2 SDRAM - 2x512&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;80GB Hard Drive, 9.5MM, 5400RPM&lt;td&gt;80GB Serial ATA drive @ 5400 rpm&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;24X CD-RW/DVD w/ Cyberlink PowerDVD™&lt;td&gt;Combo Drive (DVD-ROM/CD-RW)&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Intel® Integrated Graphics Media Accelerator 950&lt;td&gt;Intel GMA 950 graphics processor with 64MB of DDR2 SDRAM shared with main memory&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Dell Wireless™ 1390 802.11g Mini Card&lt;td&gt;AirPort Extreme Card &amp; Bluetooth&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;$1,209.00&lt;/td&gt;&lt;td&gt;$1,224.00&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr valign="top"&gt;&lt;td&gt;+shipping&lt;/td&gt;&lt;td&gt;free shipping&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr valign="top"&gt;&lt;td&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://i.dell.com/images/global/products/resultgrid/sm/latit_d820.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width:180px;" src="http://i.dell.com/images/global/products/resultgrid/sm/latit_d820.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://a248.e.akamai.net/7/248/2041/1231/store.apple.com/Catalog/US/Images/step2_beautyshot_mb_060509.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://a248.e.akamai.net/7/248/2041/1231/store.apple.com/Catalog/US/Images/step2_beautyshot_mb_060509.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;The difference isn't all that great.  Factor in shipping and it is non existant.  Plus you're getting a 6 year old OS from Microsoft or a 2 year old one from Apple.  Want Vista?  Get ready to scoop up some really heavy dough.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18095130-244753323011970057?l=saurondor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saurondor.blogspot.com/feeds/244753323011970057/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18095130&amp;postID=244753323011970057' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18095130/posts/default/244753323011970057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18095130/posts/default/244753323011970057'/><link rel='alternate' type='text/html' href='http://saurondor.blogspot.com/2007/03/why-spend-2000-bucks-on-mac.html' title='Why spend 2000 bucks on a Mac'/><author><name>Gerardo Tasistro</name><uri>http://www.blogger.com/profile/01592286228203662073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/3918/1762/1600/S4300004.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18095130.post-1555435009947121542</id><published>2007-03-21T05:34:00.001-07:00</published><updated>2007-03-22T16:08:15.804-07:00</updated><title type='text'>Dilbertization of IT</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.designboom.com/eng/interview/adams/2.gif"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px;" src="http://www.designboom.com/eng/interview/adams/2.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;Dilbertization won't stop until IT is seen as an investment rather than an expense.  Some key moment for me:&lt;br /&gt;&lt;br /&gt;mgmt:"IT is costing us too much".&lt;br /&gt;me:"Sure thing, I'll ask for voluntary resignations.  Mine included.  Pull out all the network, shut down all the servers, take out the PBX and sell all the PCs. Oh and I'll order the pigeon feed."&lt;br /&gt;&lt;br /&gt;Somehow the savings from shutting IT minus the pigeon feed costs were not accepted by management.  I wonder why?  In such a blunt straight forward situation it is clear to management how it can't live without those expenses which add up to telephone calls, pc software, network shares, email, web sites etc etc etc.&lt;br /&gt;&lt;br /&gt;But this rarely happens.  Management slowly inches accross to the point that what I propose happens for all practical purposes.  IT is degraded to a point it is disfunctional.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18095130-1555435009947121542?l=saurondor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.eweek.com/article2/0,1895,2104997,00.asp' title='Dilbertization of IT'/><link rel='replies' type='application/atom+xml' href='http://saurondor.blogspot.com/feeds/1555435009947121542/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18095130&amp;postID=1555435009947121542' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18095130/posts/default/1555435009947121542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18095130/posts/default/1555435009947121542'/><link rel='alternate' type='text/html' href='http://saurondor.blogspot.com/2007/03/dilbertization-wont-stop-until-it-is.html' title='Dilbertization of IT'/><author><name>Gerardo Tasistro</name><uri>http://www.blogger.com/profile/01592286228203662073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/3918/1762/1600/S4300004.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18095130.post-5622307268693948455</id><published>2007-03-12T17:23:00.000-07:00</published><updated>2007-03-12T17:28:54.500-07:00</updated><title type='text'>Mac UK adds</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_xdFmAyxAzd8/RfXvzAq4qKI/AAAAAAAAAAM/q_wdjv724Eo/s1600-h/Picture+1.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_xdFmAyxAzd8/RfXvzAq4qKI/AAAAAAAAAAM/q_wdjv724Eo/s320/Picture+1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5041199017543379106" /&gt;&lt;/a&gt;&lt;br /&gt;Well if you just can't get enough out the Mac vs PC adds I recommend you look into the UK adds.  Personally the Japanese camera one is better in the UK.  In it we have a new printer from Japan.  Script is soo much better.&lt;br /&gt;&lt;br /&gt;Our friendly PC looks soo much funnier in the UK.  Here we see him with a look that will probably be very common this week in the US and Canada given the new daytime saving hour.  &lt;br /&gt;&lt;br /&gt;Do you Mac or do you PC?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18095130-5622307268693948455?l=saurondor.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.apple.com/uk/getamac/ads/' title='Mac UK adds'/><link rel='replies' type='application/atom+xml' href='http://saurondor.blogspot.com/feeds/5622307268693948455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18095130&amp;postID=5622307268693948455' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18095130/posts/default/5622307268693948455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18095130/posts/default/5622307268693948455'/><link rel='alternate' type='text/html' href='http://saurondor.blogspot.com/2007/03/mac-uk-adds.html' title='Mac UK adds'/><author><name>Gerardo Tasistro</name><uri>http://www.blogger.com/profile/01592286228203662073</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://photos1.blogger.com/blogger/3918/1762/1600/S4300004.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_xdFmAyxAzd8/RfXvzAq4qKI/AAAAAAAAAAM/q_wdjv724Eo/s72-c/Picture+1.png' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
