<?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-340406218751534243</id><updated>2011-11-27T15:23:47.225-08:00</updated><category term='jquery'/><category term='hibernate'/><category term='loop'/><category term='solution'/><category term='javascript'/><category term='java'/><category term='persistence'/><category term='howto'/><category term='reference'/><category term='map'/><category term='mapping'/><category term='blogging'/><category term='error'/><category term='tip'/><title type='text'>Java Mess</title><subtitle type='html'>Place to jot down some thoughts, ideas, tips, howtos and java snippets.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://javamess.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/340406218751534243/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://javamess.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Uzbekjon</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_sI8p6ZI7pJ0/SToU-rzQgaI/AAAAAAAAABg/ojvW0d-JIms/S220/uzbekjohn.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>9</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-340406218751534243.post-2418649431398367058</id><published>2008-12-10T04:22:00.001-08:00</published><updated>2008-12-10T04:23:07.318-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='hibernate'/><category scheme='http://www.blogger.com/atom/ns#' term='persistence'/><category scheme='http://www.blogger.com/atom/ns#' term='tip'/><category scheme='http://www.blogger.com/atom/ns#' term='reference'/><title type='text'>Adding logic to accessor methods in Hibernate</title><content type='html'>&lt;p&gt;While reading &lt;a href="http://www.amazon.co.uk/gp/product/1932394885?ie=UTF8&amp;amp;tag=javmes-21&amp;amp;linkCode=as2&amp;amp;camp=1634&amp;amp;creative=6738&amp;amp;creativeASIN=1932394885"&gt;Java Persistence with Hibernate&lt;/a&gt; I came across an interesting fact that Hibernate does not require you to have getter and setter methods. On top of that it does not rely on them to check if the value of a property has changes. This means that you can amend and change your data before giving it away from getter.&lt;/p&gt; &lt;p&gt;Assume you have a Person class and a person has a first and second names, both must be capitalized.&lt;/p&gt; &lt;h4&gt;First, you can add logic into your methods, like validation:&lt;/h4&gt;&lt;code&gt; &lt;div class="code"&gt;&lt;font color="blue"&gt;public&lt;/font&gt;&lt;font color="#808080"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;class&lt;/font&gt;&lt;font color="#808080"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;Person{&lt;/font&gt;&lt;font color="#808080"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="blue"&gt;private&lt;/font&gt;&lt;font color="#808080"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#2b91af"&gt;String&lt;/font&gt;&lt;font color="#808080"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;firstName&lt;/font&gt;&lt;font color="blue"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="blue"&gt;private&lt;/font&gt;&lt;font color="#808080"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#2b91af"&gt;String&lt;/font&gt;&lt;font color="#808080"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;secondName&lt;/font&gt;&lt;font color="blue"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="blue"&gt;public&lt;/font&gt;&lt;font color="#808080"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#2b91af"&gt;String&lt;/font&gt;&lt;font color="#808080"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;getFirstName(){&lt;/font&gt;&lt;font color="#808080"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="blue"&gt;return&lt;/font&gt;&lt;font color="#808080"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;firstName&lt;/font&gt;&lt;font color="blue"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="black"&gt;}&lt;/font&gt;&lt;font color="#808080"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="blue"&gt;public&lt;/font&gt;&lt;font color="#808080"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;void&lt;/font&gt;&lt;font color="#808080"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;setFirstName(&lt;/font&gt;&lt;font color="#2b91af"&gt;String&lt;/font&gt;&lt;font color="#808080"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;firstName)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="black"&gt;throws&lt;/font&gt;&lt;font color="#808080"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;InvalidNameException{&lt;/font&gt;&lt;font color="#808080"&gt;&lt;br&gt;&lt;em&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/em&gt;&lt;/font&gt;&lt;em&gt;&lt;font color="blue"&gt;if&lt;/font&gt;&lt;font color="black"&gt;(!StringUtil.isCapitalized(firstname))&lt;/font&gt;&lt;/em&gt;&lt;font color="#808080"&gt;&lt;br&gt;&lt;em&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/em&gt;&lt;/font&gt;&lt;em&gt;&lt;font color="blue"&gt;throw&lt;/font&gt;&lt;font color="#808080"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;new&lt;/font&gt;&lt;font color="#808080"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;InvalidNameException(firstname)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;/font&gt;&lt;/em&gt;&lt;font color="#808080"&gt;&lt;br&gt;&lt;em&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/em&gt;&lt;/font&gt;&lt;em&gt;&lt;font color="blue"&gt;this&lt;/font&gt;&lt;font color="black"&gt;.firstname&lt;/font&gt;&lt;font color="#808080"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;firstname&lt;/font&gt;&lt;font color="blue"&gt;;&lt;/font&gt;&lt;/em&gt;&lt;font color="#808080"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="black"&gt;}&lt;/font&gt;&lt;font color="#808080"&gt;&lt;br&gt;&lt;/font&gt;&lt;font color="black"&gt;}&lt;/font&gt; &lt;/div&gt;&lt;/code&gt; &lt;h4&gt;Second, you can have convenience methods:&lt;/h4&gt;&lt;code&gt; &lt;div class="code"&gt;&lt;font color="blue"&gt;public&lt;/font&gt;&lt;font color="#808080"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;class&lt;/font&gt;&lt;font color="#808080"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;Person{&lt;/font&gt;&lt;font color="#808080"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="blue"&gt;private&lt;/font&gt;&lt;font color="#808080"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#2b91af"&gt;String&lt;/font&gt;&lt;font color="#808080"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;firstName&lt;/font&gt;&lt;font color="blue"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="blue"&gt;private&lt;/font&gt;&lt;font color="#808080"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#2b91af"&gt;String&lt;/font&gt;&lt;font color="#808080"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;secondName&lt;/font&gt;&lt;font color="blue"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="blue"&gt;public&lt;/font&gt;&lt;font color="#808080"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="#2b91af"&gt;String&lt;/font&gt;&lt;font color="#808080"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;getName(){&lt;/font&gt;&lt;font color="#808080"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="blue"&gt;return&lt;/font&gt;&lt;font color="#808080"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;firstName&lt;/font&gt;&lt;font color="#808080"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;+&lt;/font&gt;&lt;font color="#808080"&gt; ' ' &lt;/font&gt;&lt;font color="black"&gt;+&lt;/font&gt;&lt;font color="#808080"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;secondName&lt;/font&gt;&lt;font color="blue"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="black"&gt;}&lt;/font&gt;&lt;font color="#808080"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="blue"&gt;public&lt;/font&gt;&lt;font color="#808080"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;void&lt;/font&gt;&lt;font color="#808080"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;setName(&lt;/font&gt;&lt;font color="#2b91af"&gt;String&lt;/font&gt;&lt;font color="#808080"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;name){&lt;/font&gt;&lt;font color="#808080"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="black"&gt;StringTokenizer&lt;/font&gt;&lt;font color="#808080"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;t&lt;/font&gt;&lt;font color="#808080"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;new&lt;/font&gt;&lt;font color="#808080"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;StringTokenizer(name)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="black"&gt;firstname&lt;/font&gt;&lt;font color="#808080"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;t.nextToken()&lt;/font&gt;&lt;font color="blue"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="black"&gt;secondname&lt;/font&gt;&lt;font color="#808080"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;t.nextToken()&lt;/font&gt;&lt;font color="blue"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="black"&gt;}&lt;/font&gt;&lt;font color="#808080"&gt;&lt;br&gt;&lt;/font&gt;&lt;font color="black"&gt;}&lt;/font&gt; &lt;/div&gt;&lt;/code&gt; &lt;p&gt;&lt;strong&gt;NOTE:&lt;br&gt;&lt;/strong&gt;&lt;em&gt;The only exception is &lt;strong&gt;collections!&lt;/strong&gt; You can not change collection values in your getter and setter methods. Otherwise, Hibernate will issue an UPDATE SQL statement every time it synchronizes with database.&lt;/em&gt;&lt;/p&gt; &lt;p&gt;To conclude, you can change a property's value also add logic in your getter/setter methods if and only if the property is not a collection.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/340406218751534243-2418649431398367058?l=javamess.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamess.blogspot.com/feeds/2418649431398367058/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=340406218751534243&amp;postID=2418649431398367058' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/340406218751534243/posts/default/2418649431398367058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/340406218751534243/posts/default/2418649431398367058'/><link rel='alternate' type='text/html' href='http://javamess.blogspot.com/2008/12/adding-logic-to-accessor-methods-in.html' title='Adding logic to accessor methods in Hibernate'/><author><name>Uzbekjon</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_sI8p6ZI7pJ0/SToU-rzQgaI/AAAAAAAAABg/ojvW0d-JIms/S220/uzbekjohn.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-340406218751534243.post-1475567856024051479</id><published>2008-12-09T05:07:00.001-08:00</published><updated>2008-12-09T05:07:37.641-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='hibernate'/><category scheme='http://www.blogger.com/atom/ns#' term='persistence'/><category scheme='http://www.blogger.com/atom/ns#' term='tip'/><category scheme='http://www.blogger.com/atom/ns#' term='howto'/><category scheme='http://www.blogger.com/atom/ns#' term='reference'/><category scheme='http://www.blogger.com/atom/ns#' term='mapping'/><title type='text'>Convenience methods in Parent / Child relationships in Hibernate</title><content type='html'>&lt;p&gt;One of the most used associations in ORM is a parent/children relationship. Each parent has a set of children and a child has only one parent. So this is a snippet of a convenience method to manage children from a great book I'm currently reading &lt;a href="http://www.amazon.co.uk/gp/product/1932394885?ie=UTF8&amp;amp;tag=javmes-21&amp;amp;linkCode=as2&amp;amp;camp=1634&amp;amp;creative=6738&amp;amp;creativeASIN=1932394885"&gt;Java Persistence with Hibernate&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&lt;code&gt;&lt;font color="blue"&gt;public&lt;/font&gt;&lt;font color="#808080"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;void&lt;/font&gt;&lt;font color="#808080"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;addChildCategory(Category&lt;/font&gt;&lt;font color="#808080"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;childCategory){&lt;/font&gt;&lt;font color="#808080"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="blue"&gt;if&lt;/font&gt;&lt;font color="black"&gt;(childCategory&lt;/font&gt;&lt;font color="#808080"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;==&lt;/font&gt;&lt;font color="#808080"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;null&lt;/font&gt;&lt;font color="black"&gt;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="blue"&gt;throw&lt;/font&gt;&lt;font color="#808080"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;new&lt;/font&gt;&lt;font color="#808080"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;IllegalArgumentException(&lt;/font&gt;&lt;font color="#808080"&gt;"Null child category!"&lt;/font&gt;&lt;font color="black"&gt;)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="blue"&gt;if&lt;/font&gt;&lt;font color="black"&gt;(childCategory.getParentCategory()&lt;/font&gt;&lt;font color="#808080"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="black"&gt;!&lt;/font&gt;&lt;font color="blue"&gt;=&lt;/font&gt;&lt;font color="#808080"&gt;&amp;nbsp;&lt;/font&gt;&lt;font color="blue"&gt;null&lt;/font&gt;&lt;font color="black"&gt;)&lt;/font&gt;&lt;font color="#808080"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="black"&gt;childCategory.getParentCategory().getChildCategories().&lt;/font&gt;&lt;font color="blue"&gt;remove&lt;/font&gt;&lt;font color="black"&gt;(childCategory)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="black"&gt;childCategory.setParentCategory(&lt;/font&gt;&lt;font color="blue"&gt;this&lt;/font&gt;&lt;font color="black"&gt;)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font color="black"&gt;childCategories.&lt;/font&gt;&lt;font color="blue"&gt;add&lt;/font&gt;&lt;font color="black"&gt;(childCategory)&lt;/font&gt;&lt;font color="blue"&gt;;&lt;/font&gt;&lt;font color="#808080"&gt;&lt;br&gt;&lt;/font&gt;&lt;font color="black"&gt;}&lt;/font&gt;&lt;/code&gt;&lt;/p&gt; &lt;p&gt;Similarly you can create a &lt;code&gt;removeChildCategory()&lt;/code&gt; convenience method.&lt;/p&gt; &lt;p&gt;You probably want to make this methods public and getter/setter methods of the children field private. This will enforce cardinality of the association.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;TIP:&lt;/strong&gt;&lt;br&gt;&lt;em&gt;Hibernate does not require your entity class to have getter and setter methods. Hibernate will access your entity class properties using Java's Reflection API. So even though your properties are private Hibernate will be able to access them.&lt;/em&gt;&lt;/p&gt; &lt;p&gt;In case you have a bidirectional association and your entity class has getter methods than the getter returns a modifiable reference to your children set. This may lead to potential cardinality problem. So, I suggest to wrap your collections in getter method with &lt;code&gt;Collections.unmodifiableCollection(children)&lt;/code&gt; and &lt;code&gt;Collections.unmodifiableSet(children)&lt;/code&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/340406218751534243-1475567856024051479?l=javamess.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamess.blogspot.com/feeds/1475567856024051479/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=340406218751534243&amp;postID=1475567856024051479' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/340406218751534243/posts/default/1475567856024051479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/340406218751534243/posts/default/1475567856024051479'/><link rel='alternate' type='text/html' href='http://javamess.blogspot.com/2008/12/convenience-methods-in-parent-child.html' title='Convenience methods in Parent / Child relationships in Hibernate'/><author><name>Uzbekjon</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_sI8p6ZI7pJ0/SToU-rzQgaI/AAAAAAAAABg/ojvW0d-JIms/S220/uzbekjohn.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-340406218751534243.post-1456468966982220727</id><published>2008-12-09T02:36:00.001-08:00</published><updated>2008-12-09T04:03:50.333-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='tip'/><category scheme='http://www.blogger.com/atom/ns#' term='howto'/><category scheme='http://www.blogger.com/atom/ns#' term='reference'/><category scheme='http://www.blogger.com/atom/ns#' term='solution'/><title type='text'>How to run a stand alone HSQLDB database as a service</title><content type='html'>&lt;p&gt;&lt;a title="Open source Java database" href="http://hsqldb.org" target="_blank"&gt;HSQLDB&lt;/a&gt; database is an open source database fully written in Java. It's light weight and supports wide range of SQL standard. As I already mentioned it's fully written in Java and it can run standalone or within your Java application.&lt;/p&gt; &lt;p&gt;So you can embed it in your own application as a library. All you need is to include &lt;code&gt;hsqldb.jar&lt;/code&gt; (593KB) file in your &lt;code&gt;libs&lt;/code&gt; folder.&lt;/p&gt; &lt;p&gt;Also it's a great database to use while working on your project. You can add it as a target in your Ant build or in Maven.&lt;/p&gt; &lt;p&gt;Anyway, it's a great tool to have in your "Web Developers Toolkit". Back to the point. I needed it to run continuously in the background since my &lt;a title="IntelliJ IDEA" href="http://www.jetbrains.com/idea" target="_blank"&gt;IDE&lt;/a&gt; reads data from it to make my life easier. So this is what you need to run in your console to run HSQLDB in the background:&lt;/p&gt; &lt;p&gt;&lt;code&gt;java -classpath /path/to/hsqldb.jar org.hsqldb.Server&lt;/code&gt;&lt;/p&gt; &lt;p&gt;To stop the service press &lt;code&gt;CTRL+C&lt;/code&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/340406218751534243-1456468966982220727?l=javamess.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamess.blogspot.com/feeds/1456468966982220727/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=340406218751534243&amp;postID=1456468966982220727' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/340406218751534243/posts/default/1456468966982220727'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/340406218751534243/posts/default/1456468966982220727'/><link rel='alternate' type='text/html' href='http://javamess.blogspot.com/2008/12/how-to-run-stand-alone-hsqldb-database.html' title='How to run a stand alone HSQLDB database as a service'/><author><name>Uzbekjon</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_sI8p6ZI7pJ0/SToU-rzQgaI/AAAAAAAAABg/ojvW0d-JIms/S220/uzbekjohn.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-340406218751534243.post-2259262962137673021</id><published>2008-12-05T03:57:00.001-08:00</published><updated>2008-12-05T22:02:26.705-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tip'/><category scheme='http://www.blogger.com/atom/ns#' term='howto'/><category scheme='http://www.blogger.com/atom/ns#' term='solution'/><category scheme='http://www.blogger.com/atom/ns#' term='blogging'/><title type='text'>How to insert colorized code to any blog including Blogger, code to html converter</title><content type='html'>&lt;p&gt;I recently started blogging about my experience with bloated, messy and mainly standards based programming language - Java. So I needed a way to paste my Java, XML and other programming language codes in more readable and colored way. So after a little research I found an &lt;a href="http://www.chamisplace.com/colorizer/cc.asp" target="_blank"&gt;online HTML generator&lt;/a&gt;. You can paste your code and it will generate colored version of your code in HTML. Than you can switch to HTML version in your editor paste the code and wua la:&lt;/p&gt;&lt;pre&gt;&lt;span style="color:red;"&gt;&lt;b&gt;package&lt;/b&gt;&lt;/span&gt; messy.java&lt;span style=";font-size:78%;color:blue;"  &gt;&lt;b&gt;;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:red;"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt; &lt;span style="color:red;"&gt;&lt;b&gt;class&lt;/b&gt;&lt;/span&gt; SomeClass &lt;span style=";font-size:78%;color:blue;"  &gt;&lt;b&gt;{&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:red;"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/span&gt; &lt;span style="color:red;"&gt;&lt;b&gt;static&lt;/b&gt;&lt;/span&gt; &lt;span style="color:red;"&gt;&lt;b&gt;final&lt;/b&gt;&lt;/span&gt; Integer myVar&lt;span style=";font-size:78%;color:blue;"  &gt;&lt;b&gt;;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:red;"&gt;&lt;b&gt;static&lt;/b&gt;&lt;/span&gt; &lt;span style=";font-size:78%;color:blue;"  &gt;&lt;b&gt;{&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:red;"&gt;&lt;b&gt;try&lt;/b&gt;&lt;/span&gt; &lt;span style=";font-size:78%;color:blue;"  &gt;&lt;b&gt;{&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:green;"&gt;&lt;i&gt;// Some comment&lt;br /&gt;&lt;/i&gt;&lt;/span&gt;      myVar &lt;span style=";font-size:78%;color:blue;"  &gt;=&lt;/span&gt; &lt;span style="color:red;"&gt;&lt;b&gt;new&lt;/b&gt;&lt;/span&gt; Integer&lt;span style=";font-size:78%;color:blue;"  &gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-size:78%;color:blue;"  &gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-size:78%;color:blue;"  &gt;&lt;b&gt;;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style=";font-size:78%;color:blue;"  &gt;&lt;b&gt;}&lt;/b&gt;&lt;/span&gt; &lt;span style="color:red;"&gt;&lt;b&gt;catch&lt;/b&gt;&lt;/span&gt; &lt;span style=";font-size:78%;color:blue;"  &gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;Throwable ex&lt;span style=";font-size:78%;color:blue;"  &gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt; &lt;span style=";font-size:78%;color:blue;"  &gt;&lt;b&gt;{&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;    System&lt;span style=";font-size:78%;color:blue;"  &gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;err&lt;span style=";font-size:78%;color:blue;"  &gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;println&lt;span style=";font-size:78%;color:blue;"  &gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style="color:purple;"&gt;"Error:"&lt;/span&gt; &lt;span style=";font-size:78%;color:blue;"  &gt;+&lt;/span&gt; ex&lt;span style=";font-size:78%;color:blue;"  &gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-size:78%;color:blue;"  &gt;&lt;b&gt;;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;   &lt;span style="color:red;"&gt;&lt;b&gt;throw&lt;/b&gt;&lt;/span&gt; &lt;span style="color:red;"&gt;&lt;b&gt;new&lt;/b&gt;&lt;/span&gt; ExceptionInInitializerError&lt;span style=";font-size:78%;color:blue;"  &gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;ex&lt;span style=";font-size:78%;color:blue;"  &gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-size:78%;color:blue;"  &gt;&lt;b&gt;;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style=";font-size:78%;color:blue;"  &gt;&lt;b&gt;}&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-size:78%;color:blue;"  &gt;&lt;b&gt;}&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-size:78%;color:blue;"  &gt;&lt;b&gt;}&lt;/b&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;If you are using Windows Live Writer to post your entries, than you are lucky, there is a &lt;a href="http://www.carlosag.net/Tools/WindowsLiveWriter/" target="_blank"&gt;plugin for you&lt;/a&gt; and for those who does not there is a &lt;a href="http://www.carlosag.net/Tools/CodeColorizer/" target="_blank"&gt;stand alone version&lt;/a&gt; as well.&lt;/p&gt;&lt;p&gt;Happy blogging :)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/340406218751534243-2259262962137673021?l=javamess.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamess.blogspot.com/feeds/2259262962137673021/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=340406218751534243&amp;postID=2259262962137673021' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/340406218751534243/posts/default/2259262962137673021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/340406218751534243/posts/default/2259262962137673021'/><link rel='alternate' type='text/html' href='http://javamess.blogspot.com/2008/12/how-to-insert-colorized-code-to-any.html' title='How to insert colorized code to any blog including Blogger, code to html converter'/><author><name>Uzbekjon</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_sI8p6ZI7pJ0/SToU-rzQgaI/AAAAAAAAABg/ojvW0d-JIms/S220/uzbekjohn.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-340406218751534243.post-8861088863052075531</id><published>2008-12-05T02:43:00.001-08:00</published><updated>2008-12-05T02:47:25.023-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='hibernate'/><category scheme='http://www.blogger.com/atom/ns#' term='tip'/><category scheme='http://www.blogger.com/atom/ns#' term='reference'/><title type='text'>Minimum set of required libraries for Hibernate</title><content type='html'>&lt;p&gt;Hibernate is a great ORM framework. It makes your life much easier and increases your effectiveness. I'm still learning it and using it for almost all of my projects (of course, I don't blindly use it, I try to find arguments to support this decision). Another great tool to improve your programming effectiveness and make your programmer life much easier is an Apache Maven. I'm sure you already using Apache Ant, trust me if you like Ant, you will love Maven!&lt;/p&gt; &lt;p&gt;If you're using Maven then you are lucky and don't really need to know what are the prerequisites for Hibernate. Maven finds and loads them for you!!! But anyway if you are not using Maven nor Maven plugin for Ant then here is &lt;strong&gt;the list of required libraries for Hibernate project&lt;/strong&gt;:&lt;/p&gt; &lt;p&gt;&lt;code&gt;+libs&lt;br&gt;- antlr.jar&lt;br&gt;- cglib.jar&lt;br&gt;- asm.jar&lt;br&gt;- asm-attrs.jars&lt;br&gt;- commons-collections.jar&lt;br&gt;- commons-logging.jar&lt;br&gt;- hibernate3.jar&lt;br&gt;- jta.jar&lt;br&gt;- dom4j.jar&lt;br&gt;- &lt;em&gt;log4j.jar&lt;/em&gt;&lt;/code&gt;&lt;/p&gt; &lt;p&gt;The last &lt;code&gt;log4j.jar&lt;/code&gt; is not required, but nice to have :)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/340406218751534243-8861088863052075531?l=javamess.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamess.blogspot.com/feeds/8861088863052075531/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=340406218751534243&amp;postID=8861088863052075531' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/340406218751534243/posts/default/8861088863052075531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/340406218751534243/posts/default/8861088863052075531'/><link rel='alternate' type='text/html' href='http://javamess.blogspot.com/2008/12/minimum-set-of-required-libraries-for.html' title='Minimum set of required libraries for Hibernate'/><author><name>Uzbekjon</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_sI8p6ZI7pJ0/SToU-rzQgaI/AAAAAAAAABg/ojvW0d-JIms/S220/uzbekjohn.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-340406218751534243.post-6345877259872856913</id><published>2008-12-04T23:36:00.001-08:00</published><updated>2008-12-04T23:40:10.579-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='tip'/><category scheme='http://www.blogger.com/atom/ns#' term='howto'/><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><category scheme='http://www.blogger.com/atom/ns#' term='solution'/><category scheme='http://www.blogger.com/atom/ns#' term='error'/><title type='text'>Access to restricted URI denied" code: "1012</title><content type='html'>&lt;p&gt;I was working on the interface for our catalogue/directory structure. We use great JavaScript library jQuery and I came up to this problem:&lt;/p&gt;  &lt;p&gt;&lt;code&gt;Access to restricted URI denied&amp;quot; code: &amp;quot;1012      &lt;br /&gt;xhr.open(type, s.url, s.async);&lt;/code&gt; &lt;/p&gt;  &lt;p&gt;&lt;em&gt;(This error is produced in Firebug, plug-in for Firefox.)&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;The error occurs when it tries to do an AJAX request call to local resource. So to solve this problem you need to deploy your files to your web server or run one locally. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/340406218751534243-6345877259872856913?l=javamess.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamess.blogspot.com/feeds/6345877259872856913/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=340406218751534243&amp;postID=6345877259872856913' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/340406218751534243/posts/default/6345877259872856913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/340406218751534243/posts/default/6345877259872856913'/><link rel='alternate' type='text/html' href='http://javamess.blogspot.com/2008/12/access-to-restricted-uri-denied-code.html' title='Access to restricted URI denied&amp;quot; code: &amp;quot;1012'/><author><name>Uzbekjon</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_sI8p6ZI7pJ0/SToU-rzQgaI/AAAAAAAAABg/ojvW0d-JIms/S220/uzbekjohn.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-340406218751534243.post-6097742168701056921</id><published>2008-12-04T21:42:00.001-08:00</published><updated>2008-12-04T21:42:36.930-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='hibernate'/><category scheme='http://www.blogger.com/atom/ns#' term='persistence'/><category scheme='http://www.blogger.com/atom/ns#' term='tip'/><category scheme='http://www.blogger.com/atom/ns#' term='howto'/><category scheme='http://www.blogger.com/atom/ns#' term='mapping'/><title type='text'>Hibernate: Self-mapping Parent/Child relationship using annotations</title><content type='html'>&lt;p&gt;Yesterday I wrote about self mapping collections in Hibernate. I used XML mapping document to define the relationship. Today I would like to show how to achieve the same result using Java Annotations. So without further adu here is the java class:&lt;/p&gt; &lt;code&gt;@Entity    &lt;br /&gt;@Table(name = &amp;quot;CATALOGUE&amp;quot;)     &lt;br /&gt;public class Catalogue implements Serializable {     &lt;p&gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; @Id      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @Column(name = &amp;quot;ID&amp;quot;)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; private Integer id; &lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; @Column(name = &amp;quot;CONTENT&amp;quot;, nullable = true)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; private String content; &lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; @ManyToOne      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; @JoinColumn(name = &amp;quot;PARENT_ID&amp;quot;)       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; private Catalogue parent; &lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; @OneToMany(mappedBy = &amp;quot;parent&amp;quot;)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; private Set&amp;lt;Catalogue&amp;gt; children = new HashSet&amp;lt;Catalogue&amp;gt;(); &lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; public Catalogue() {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; } &lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; public Integer getId() {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return id;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; } &lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; public void setId(int id) {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.id = id;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; } &lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; public String getContent() {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return content;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; } &lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; public void setContent(String content) {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.content = content;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; } &lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; public Set&amp;lt;Catalogue&amp;gt; getChildren() {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return children;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; } &lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; public void setChildren(Set&amp;lt;Catalogue&amp;gt; children) {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.children = children;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; } &lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; public void addChild(Catalogue child) {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; child.setParent(this);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; children.add(child);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; } &lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; public Catalogue getParent() {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return parent;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; } &lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; public void setParent(Catalogue parent) {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.parent = parent;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }       &lt;br /&gt;}&lt;/p&gt;&lt;/code&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/340406218751534243-6097742168701056921?l=javamess.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamess.blogspot.com/feeds/6097742168701056921/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=340406218751534243&amp;postID=6097742168701056921' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/340406218751534243/posts/default/6097742168701056921'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/340406218751534243/posts/default/6097742168701056921'/><link rel='alternate' type='text/html' href='http://javamess.blogspot.com/2008/12/hibernate-self-mapping-parentchild.html' title='Hibernate: Self-mapping Parent/Child relationship using annotations'/><author><name>Uzbekjon</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_sI8p6ZI7pJ0/SToU-rzQgaI/AAAAAAAAABg/ojvW0d-JIms/S220/uzbekjohn.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-340406218751534243.post-840786031717128459</id><published>2008-12-03T22:22:00.000-08:00</published><updated>2008-12-04T06:00:54.402-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='hibernate'/><category scheme='http://www.blogger.com/atom/ns#' term='persistence'/><category scheme='http://www.blogger.com/atom/ns#' term='tip'/><category scheme='http://www.blogger.com/atom/ns#' term='howto'/><category scheme='http://www.blogger.com/atom/ns#' term='mapping'/><title type='text'>Hibernate: Mapping an entity to itself - Parent / Child relashipship</title><content type='html'>Well I am kinda into Hibernate right now. Converting the project that I'm working on to Hibernate. We have a catalogue that has a Parent/Child relationship, similar to directory structure or some tree. Basically a catalogue/direcotry has another catalogue/directory as a child or parent. So basically this entity maps to itself (self-mapping so to speak).&lt;p&gt;&lt;strong&gt;Hibernate XML mapping file:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 286px;" src="http://1.bp.blogspot.com/_sI8p6ZI7pJ0/STfbdDP3vCI/AAAAAAAAAAU/UpoPCnFJoKk/s400/hibernate-self-mapping-xml.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5275926780622388258" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Mapping java class:&lt;/strong&gt;&lt;/p&gt;&lt;code&gt;public class Catalogue {&lt;br /&gt;    private int id;&lt;br /&gt;    private String content;&lt;br /&gt;    private Catalogue parent;&lt;br /&gt;    private Set&amp;lt;Catalogue&amp;gt; children = &lt;br /&gt;                                            new HashSet&amp;lt;Catalogue&amp;gt;();&lt;br /&gt;&lt;br /&gt;    public Parent(){&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public int getId() {&lt;br /&gt;            return id;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void setId(int id) {&lt;br /&gt;            this.id = id;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public String getContent() {&lt;br /&gt;            return content;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void setContent(String content) {&lt;br /&gt;            this.content = content;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public Set&amp;lt;Catalogue&amp;gt; getChildren() {&lt;br /&gt;            return children;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void setChildren(Set&amp;lt;Catalogue&amp;gt; children){&lt;br /&gt;            this.children = children;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void addChild(Catalogue child){&lt;br /&gt;           child.setParent(this);&lt;br /&gt;           children.add(child);&lt;br /&gt;    }&lt;br /&gt; &lt;br /&gt;    public String getParent() {&lt;br /&gt;            return parent;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void setParent(Catalogue parent) {&lt;br /&gt;            this.parent = parent;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/340406218751534243-840786031717128459?l=javamess.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamess.blogspot.com/feeds/840786031717128459/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=340406218751534243&amp;postID=840786031717128459' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/340406218751534243/posts/default/840786031717128459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/340406218751534243/posts/default/840786031717128459'/><link rel='alternate' type='text/html' href='http://javamess.blogspot.com/2008/12/hibernate-mapping-entity-to-itself.html' title='Hibernate: Mapping an entity to itself - Parent / Child relashipship'/><author><name>Uzbekjon</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_sI8p6ZI7pJ0/SToU-rzQgaI/AAAAAAAAABg/ojvW0d-JIms/S220/uzbekjohn.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_sI8p6ZI7pJ0/STfbdDP3vCI/AAAAAAAAAAU/UpoPCnFJoKk/s72-c/hibernate-self-mapping-xml.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-340406218751534243.post-8407188716866490143</id><published>2008-12-03T21:17:00.000-08:00</published><updated>2008-12-05T04:19:07.438-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='map'/><category scheme='http://www.blogger.com/atom/ns#' term='loop'/><category scheme='http://www.blogger.com/atom/ns#' term='tip'/><category scheme='http://www.blogger.com/atom/ns#' term='howto'/><title type='text'>Traversing the Map (HashMap) in Java</title><content type='html'>This is how to loop over a map in java similar to PHP's &lt;code&gt;foreach&lt;/code&gt; statement. There are, of course, other methods using &lt;code&gt;iterator&lt;/code&gt; and &lt;code&gt;entrySet&lt;/code&gt;, but who needs them when you have this:&lt;br /&gt;&lt;pre&gt;&lt;span style="color:GREEN;"&gt;&lt;i&gt;//HashMap&amp;lt;Key, Value&amp;gt; map = new HashMap&amp;lt;Key, Value&amp;gt;();&lt;br /&gt;&lt;/i&gt;&lt;/span&gt;&lt;span style="color:RED;"&gt;&lt;b&gt;for&lt;/b&gt;&lt;/span&gt; &lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;Key key &lt;span style=";font-size:78%;color:BLUE;"  &gt;:&lt;/span&gt; map&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;keySet&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt; &lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;{&lt;/b&gt;&lt;/span&gt;&lt;br /&gt; Value value &lt;span style=";font-size:78%;color:BLUE;"  &gt;=&lt;/span&gt; map&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;.&lt;/b&gt;&lt;/span&gt;get&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;(&lt;/b&gt;&lt;/span&gt;key&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-size:78%;color:BLUE;"  &gt;&lt;b&gt;}&lt;/b&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/340406218751534243-8407188716866490143?l=javamess.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamess.blogspot.com/feeds/8407188716866490143/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=340406218751534243&amp;postID=8407188716866490143' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/340406218751534243/posts/default/8407188716866490143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/340406218751534243/posts/default/8407188716866490143'/><link rel='alternate' type='text/html' href='http://javamess.blogspot.com/2008/12/traversing-map-hashmap.html' title='Traversing the Map (HashMap) in Java'/><author><name>Uzbekjon</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_sI8p6ZI7pJ0/SToU-rzQgaI/AAAAAAAAABg/ojvW0d-JIms/S220/uzbekjohn.jpg'/></author><thr:total>0</thr:total></entry></feed>
