<?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-3782645822218400462</id><updated>2012-02-02T21:38:18.576+01:00</updated><title type='text'>Being part of something special makes you special!</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://iheartcoding.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3782645822218400462/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://iheartcoding.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Simo</name><uri>http://www.blogger.com/profile/04398010260610917294</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_ATi2_0wlQVY/S2NlsCxha-I/AAAAAAAAEj0/HY-ApaCVwT0/S220/justme_small.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>7</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3782645822218400462.post-6737760734644723916</id><published>2010-04-09T17:38:00.003+02:00</published><updated>2010-04-09T17:40:37.820+02:00</updated><title type='text'>Why Apache iBATIS is still a killer library</title><content type='html'>Follow below words written by Clinton Begin, the creator of Apache iBATIS:&lt;br /&gt;&lt;br /&gt;"This is what has killed J2EE vs. the alternatives.  Look at the history:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;CMP - Spec.  Dead, along with all implementations.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;EJB - Spec.  Dead.  Spring killed it -- not a spec.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;JDO - Spec.  Dead, along with all implementations.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;JSF - DOA.  Bad idea to begin with, and has failed to unify client side Java.  Struts, GWT, Wickett, Stripes, ZK, Tapestry, etc.  all still exist -- and are more popular than JSF -- all without a spec.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Some specs have succeeded, due to their simplicity and natural interface boundary (usually a network connection requiring a driver of sorts).  These include Servlet, JDBC and JMS.  Even though they're not the nicest, they're simple and necessary. Yet they too differ in many ways, especially JDBC.  JPA has a chance, but only because they essentially took the two most popular frameworks that weren't specs and made them into a spec... nobody will be winning any innovation awards for that one.&lt;br /&gt;&lt;br /&gt;The spec doesn't guarantee anything.  Kind of like a green light doesn't guarantee that cars won't be driving through the opposing red light at an intersection... do you not check?&lt;br /&gt;&lt;br /&gt;The only thing that defines how a framework will work is the framework itself -- spec or not.  The only protection you have is your own unit, functional and integration tests -- which you need anyway, as it's also the only way you'll know if YOUR code works."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3782645822218400462-6737760734644723916?l=iheartcoding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iheartcoding.blogspot.com/feeds/6737760734644723916/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://iheartcoding.blogspot.com/2010/04/why-apache-ibatis-is-still-killer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3782645822218400462/posts/default/6737760734644723916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3782645822218400462/posts/default/6737760734644723916'/><link rel='alternate' type='text/html' href='http://iheartcoding.blogspot.com/2010/04/why-apache-ibatis-is-still-killer.html' title='Why Apache iBATIS is still a killer library'/><author><name>Simo</name><uri>http://www.blogger.com/profile/04398010260610917294</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_ATi2_0wlQVY/S2NlsCxha-I/AAAAAAAAEj0/HY-ApaCVwT0/S220/justme_small.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3782645822218400462.post-2845407527847812839</id><published>2010-03-03T11:05:00.002+01:00</published><updated>2010-03-03T11:11:31.716+01:00</updated><title type='text'>iBaGuice 1.0-beta-2 is out!</title><content type='html'>The iBaGuice team is pleased to announce that the 1.0-beta-2 version&lt;br /&gt;of iBaGuice was released yesterday, you can check it out &lt;a href="http://ibaguice.googlecode.com/svn/site/1.0-beta-2/index.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Major news are:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;apache ibatis dependency has been upgrated to 3.0-beta-10;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;apache commons-dbcp dependency has been upgrated to 1.3 and planned&lt;br /&gt;to support apache commons-dbcp 1.4;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;code&gt;@Transactional&lt;/code&gt; behavior has been modified according to new&lt;br /&gt;apache-ibatis APIs to support transaction isolation levels;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;new cache module added, based on Hazelcast, useful to realize&lt;br /&gt;high-scalable applications.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;More news are coming for the beta-3:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;new cache module, based on JBoss INFINISPAN;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;first apache-ibatis interceptor plugin, based on&lt;br /&gt;Hibernate-Validator, the JSR303 (Bean Validation) reference&lt;br /&gt;implementation.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Don't forget to join the Google &lt;a href="http://groups.google.com/group/ibaguice"&gt;iBaGuice Group&lt;/a&gt;: questions, feedbacks, suggestions, patches, design discussion, nice to have list, whatever you need, are always more than appreciated :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3782645822218400462-2845407527847812839?l=iheartcoding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iheartcoding.blogspot.com/feeds/2845407527847812839/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://iheartcoding.blogspot.com/2010/03/ibaguice-10-beta-2-is-out.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3782645822218400462/posts/default/2845407527847812839'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3782645822218400462/posts/default/2845407527847812839'/><link rel='alternate' type='text/html' href='http://iheartcoding.blogspot.com/2010/03/ibaguice-10-beta-2-is-out.html' title='iBaGuice 1.0-beta-2 is out!'/><author><name>Simo</name><uri>http://www.blogger.com/profile/04398010260610917294</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_ATi2_0wlQVY/S2NlsCxha-I/AAAAAAAAEj0/HY-ApaCVwT0/S220/justme_small.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3782645822218400462.post-2130307650514387135</id><published>2010-02-13T11:56:00.003+01:00</published><updated>2010-02-13T12:09:01.648+01:00</updated><title type='text'>Don't create loggers by hand, use sli4j</title><content type='html'>Yesterday in the night I just released my last effort I realized with my friend &lt;a href="http://www.marcosperanza.org/"&gt;Marco&lt;/a&gt;: &lt;a href="http://sli4j.googlecode.com/svn/site/1.0/index.html"&gt;sli4j&lt;/a&gt; that stands for &lt;i&gt;Simple Logging Injector 4 Java&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;The projects aims to delegate to Google Guice (what else?) the &lt;i&gt;Logger&lt;/i&gt; creation and injection, depending on your preferred Logging framework. By default, &lt;i&gt;sli4j&lt;/i&gt; provides modules to bind &lt;i&gt;Loggers&lt;/i&gt; to&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Java Utils Logging;&lt;/li&gt; &lt;br /&gt;&lt;li&gt;Apache &lt;a href="http://commons.apache.org/logging/"&gt;commons-logging&lt;/a&gt;;&lt;/li&gt; &lt;br /&gt;&lt;li&gt;Apache &lt;a href="http://logging.apache.org/log4j/"&gt;log4j&lt;/a&gt;;&lt;/li&gt; &lt;br /&gt;&lt;li&gt;Simple Logging Facade for Java &lt;a href="http://www.slf4j.org/"&gt;slf4j&lt;/a&gt;, with &lt;a href="http://logback.qos.ch/"&gt;Logback&lt;/a&gt; support.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;But more exigent users that have the need to use their custom logging framework, can easily extend the &lt;i&gt;sli4j&lt;/i&gt; core module and with 2 simple steps can create their corporate logging injector.&lt;br /&gt;&lt;br /&gt;Every kind of feedback is more thank welcome :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3782645822218400462-2130307650514387135?l=iheartcoding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iheartcoding.blogspot.com/feeds/2130307650514387135/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://iheartcoding.blogspot.com/2010/02/dont-create-loggers-by-hand-use-sli4j.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3782645822218400462/posts/default/2130307650514387135'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3782645822218400462/posts/default/2130307650514387135'/><link rel='alternate' type='text/html' href='http://iheartcoding.blogspot.com/2010/02/dont-create-loggers-by-hand-use-sli4j.html' title='Don&apos;t create loggers by hand, use sli4j'/><author><name>Simo</name><uri>http://www.blogger.com/profile/04398010260610917294</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_ATi2_0wlQVY/S2NlsCxha-I/AAAAAAAAEj0/HY-ApaCVwT0/S220/justme_small.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3782645822218400462.post-3670637339550880147</id><published>2010-02-12T09:18:00.004+01:00</published><updated>2010-02-12T10:10:00.597+01:00</updated><title type='text'>Tired of default maven site theme? You don't know fluido-skin</title><content type='html'>I'm a software passionate at 360°, and I always take care about styles, from coding style to documentation style.&lt;br /&gt;&lt;br /&gt;For this reason I started adoring &lt;a href="http://maven.apache.org/"&gt;Apache Maven&lt;/a&gt;, not just because makes easier the software lifecycle, but also because it's the first tool that allowed me creating enhanced documentation in a standard-de-facto way!!!&lt;br /&gt;&lt;br /&gt;But even that more than satisfied, I got tired soon using the default Maven skin stile and started thinking about how to improve it...&lt;br /&gt;&lt;br /&gt;So, first I switched to &lt;a href="http://svn.apache.org/repos/asf/commons/proper/commons-skin/"&gt;Apache Commons skin&lt;/a&gt;: nicer and more elegant, but again, after few months I got tired... the available skins I found on &lt;a href="http://docs.codehaus.org/display/MAVENUSER/Maven+Skins"&gt;Codehaus wiki&lt;/a&gt; didn't match with my wishes, so my last bullet to shoot was creating my own skin.&lt;br /&gt;&lt;br /&gt;Fortunately I found the online &lt;a href="http://www.sonatype.com/books/mvnref-book/reference/site-generation-sect-custom-template.html"&gt;Sonatype's guide&lt;/a&gt; and after 2 hours of work I created the &lt;a href="http://code.google.com/p/fluido-skin/"&gt;Fluido skin&lt;/a&gt;, with enhanced features:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;rounded corners, via &lt;a href="http://www.html.it/articoli/niftycube/index.html"&gt;Nifty Corners Cube&lt;/a&gt;;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;syntax highlighting of source code snippets, via &lt;a href="http://code.google.com/p/google-code-prettify/"&gt;google-code-prettify&lt;/a&gt;;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;accurated choice of fonts and colors. :P&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://ibaguice.googlecode.com/svn/site/1.0-beta-1/index.html"&gt;Here&lt;/a&gt; you can see how it looks, and if you like it you've to follow these simple steps: first of all, just add the fluido-skin repository in your &lt;code&gt;pom.xml&lt;/code&gt;:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;repositories&amp;gt;&lt;br /&gt;    ....&lt;br /&gt;    &amp;lt;repository&amp;gt;&lt;br /&gt;        &amp;lt;id&amp;gt;fluido-skin-repository&amp;lt;/id&amp;gt;&lt;br /&gt;        &amp;lt;name&amp;gt;fluido-skin Repository for Maven&amp;lt;/name&amp;gt;&lt;br /&gt;        &amp;lt;url&amp;gt;http://fluido-skin.googlecode.com/svn/repo&amp;lt;/url&amp;gt;&lt;br /&gt;        &amp;lt;layout&amp;gt;default&amp;lt;/layout&amp;gt;&lt;br /&gt;    &amp;lt;/repository&amp;gt;&lt;br /&gt;    ....&lt;br /&gt;&amp;lt;/repositories&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Then, in your site.xml add the skin:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;project name="XXXXXXXX"&amp;gt;&lt;br /&gt;    ....&lt;br /&gt;    &amp;lt;skin&amp;gt;&lt;br /&gt;        &amp;lt;groupId&amp;gt;com.google.code&amp;lt;/groupId&amp;gt;&lt;br /&gt;        &amp;lt;artifactId&amp;gt;fluido-skin&amp;lt;/artifactId&amp;gt;&lt;br /&gt;        &amp;lt;version&amp;gt;1.2&amp;lt;/version&amp;gt;&lt;br /&gt;    &amp;lt;/skin&amp;gt;&lt;br /&gt;    ....&lt;br /&gt;&amp;lt;/project&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;and that's all! Generate you site and have fun with the new skin! :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3782645822218400462-3670637339550880147?l=iheartcoding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iheartcoding.blogspot.com/feeds/3670637339550880147/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://iheartcoding.blogspot.com/2010/02/tired-of-default-maven-site-theme-you.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3782645822218400462/posts/default/3670637339550880147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3782645822218400462/posts/default/3670637339550880147'/><link rel='alternate' type='text/html' href='http://iheartcoding.blogspot.com/2010/02/tired-of-default-maven-site-theme-you.html' title='Tired of default maven site theme? You don&apos;t know fluido-skin'/><author><name>Simo</name><uri>http://www.blogger.com/profile/04398010260610917294</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_ATi2_0wlQVY/S2NlsCxha-I/AAAAAAAAEj0/HY-ApaCVwT0/S220/justme_small.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3782645822218400462.post-6859621023451851527</id><published>2010-02-03T20:41:00.002+01:00</published><updated>2010-02-03T20:45:38.272+01:00</updated><title type='text'>Let's get it on!</title><content type='html'>As previously announced, today I started working as a &lt;a href="http://www.sourcesense.com/"&gt;Sourcesense&lt;/a&gt; staff member: I felt like the first day at school, but quite nicer and more interesting :)&lt;br /&gt;And a new challenge was waiting for me: customizing &lt;a href="http://www.atlassian.com/software/jira/"&gt;JIRA&lt;/a&gt; and writing amazing plugin... let's get it on!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3782645822218400462-6859621023451851527?l=iheartcoding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iheartcoding.blogspot.com/feeds/6859621023451851527/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://iheartcoding.blogspot.com/2010/02/lets-get-it-on.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3782645822218400462/posts/default/6859621023451851527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3782645822218400462/posts/default/6859621023451851527'/><link rel='alternate' type='text/html' href='http://iheartcoding.blogspot.com/2010/02/lets-get-it-on.html' title='Let&apos;s get it on!'/><author><name>Simo</name><uri>http://www.blogger.com/profile/04398010260610917294</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_ATi2_0wlQVY/S2NlsCxha-I/AAAAAAAAEj0/HY-ApaCVwT0/S220/justme_small.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3782645822218400462.post-5361907535760431572</id><published>2010-01-31T19:29:00.010+01:00</published><updated>2010-01-31T20:16:18.095+01:00</updated><title type='text'>Enjoy the power of iBatis 3 + Guice 2!</title><content type='html'>&lt;p&gt;Both products don't need to be introduced, final version of iBatis 3 is going to be release soon and Guice 2 is widely used in production evironments, fist of all in Google itself.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Marco Speranza, a close friend of mine, and I, are great fan of these technologies and in our daily work we strongly use both frameworks; we both noticed we've been continuously repeating the same code in different projects, so during the Xmas vacations, during a rainy day, we started speaking on Skype about a possible solution to combine the 2 framework according to the DRY - &lt;i&gt;Don't Repeat Yourself&lt;/i&gt; - principle, realizing something that alleviate us the task to reduce and simplify the applications code, injecting the &lt;code&gt;org.apache.ibatis.session.SqlSessionFactory&lt;/code&gt; via &lt;code&gt;@com.google.inject.Injector&lt;/code&gt;.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;That day we gave born to &lt;a href="http://ibaguice.googlecode.com/svn/site/1.0-SNAPSHOT/index.html"&gt;iBaGuice&lt;/a&gt; (still snapshot!), the perfect glue between the two more popular frameworks.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The first point of strength is the ability of creating the &lt;code&gt;org.apache.ibatis.session.SqlSessionFactory&lt;/code&gt; through &lt;i&gt;Google Guice&lt;/i&gt;, included in the &lt;a href="http://ibaguice.googlecode.com/svn/site/1.0-SNAPSHOT/core.html"&gt;core&lt;/a&gt; module, that binds magically all the required components, with a large support for 3rd parties developed &lt;i&gt;Data Source&lt;/i&gt; and &lt;i&gt;Transactions Managers&lt;/i&gt;. As reported in the official documentation, the typical use case shows how iBaGuice simplifies developers stuff:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;import com.google.code.ibaguice.core.SqlSessionFactoryModule;&lt;br /&gt;import com.google.inject.Guice;&lt;br /&gt;import com.google.inject.Injector;&lt;br /&gt;import com.google.inject.Provider;&lt;br /&gt;import javax.sql.DataSource;&lt;br /&gt;import org.apache.ibatis.session.SqlSessionFactory;&lt;br /&gt;import org.apache.ibatis.transaction.TransactionFactory;&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;Class&amp;lt;? extends Provider&amp;lt;DataSource&amp;gt;&amp;gt; dataSourceProviderClass = [...];&lt;br /&gt;Class&amp;lt;? extends Provider&amp;lt;TransactionFactory&amp;gt;&amp;gt; txFactoryProviderClass = [...];&lt;br /&gt;&lt;br /&gt;Injector injector = Guice.createInjector(&lt;br /&gt;    new SqlSessionFactoryModule(dataSourceProviderClass, txFactoryProviderClass),&lt;br /&gt;    ...&lt;br /&gt;);&lt;br /&gt;&lt;br /&gt;SqlSessionFactory sessionFactory = injector.getInstance(SqlSessionFactory.class);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;More interesting is, in our opinion, the &lt;code&gt;@Transactional&lt;/code&gt; annotation handled via &lt;i&gt;AOP&lt;/i&gt; included in the &lt;a href="http://ibaguice.googlecode.com/svn/site/1.0-SNAPSHOT/dao.html"&gt;DAO&lt;/a&gt; module; code like&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;package com.acme;&lt;br /&gt;&lt;br /&gt;import com.google.inject.Singleton;&lt;br /&gt;import com.google.code.ibaguice.dao.*;&lt;br /&gt;&lt;br /&gt;@Singleton&lt;br /&gt;public final class FooDAOImpl extends AbstractDao implements FooDAO {&lt;br /&gt;&lt;br /&gt;    public void doFooBar() throws Exception {&lt;br /&gt;        SqlSession session = this.getSqlSessionFactory().openSession(ExecutorType.SIMPLE, TransactionIsolationLevel.READ_UNCOMMITED);&lt;br /&gt;        try {&lt;br /&gt;            FooMapper fooMapper = session.getMapper(FooMapper.class);&lt;br /&gt;            fooMapper.doFoo();&lt;br /&gt;&lt;br /&gt;            BarMapper barMapper = session.getMapper(BarMapper.class);&lt;br /&gt;            barMapper.doBar();&lt;br /&gt;&lt;br /&gt;            session.commit();&lt;br /&gt;        } catch (Throwable t) {&lt;br /&gt;            session.rollback();&lt;br /&gt;            throw new Exception("Something went wrong", t);&lt;br /&gt;        } finally {&lt;br /&gt;            session.close();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;easily becomes, using the &lt;i&gt;TransactionalModule&lt;/i&gt; like this:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;package com.acme;&lt;br /&gt;&lt;br /&gt;import com.google.inject.Singleton;&lt;br /&gt;import com.google.code.ibaguice.dao.*;&lt;br /&gt;&lt;br /&gt;@Singleton&lt;br /&gt;public final class FooDAOImpl extends AbstractTransactionalDao implements FooDAO {&lt;br /&gt;&lt;br /&gt;    @com.google.code.ibaguice.dao.Transactional(ExecutorType.SIMPLE, TransactionIsolationLevel.READ_UNCOMMITED)&lt;br /&gt;    public void doFooBar() {&lt;br /&gt;        FooMapper fooMapper = this.getMapper(FooMapper.class);&lt;br /&gt;        fooMapper.doFoo();&lt;br /&gt;&lt;br /&gt;        BarMapper barMapper = this.getMapper(BarMapper.class);&lt;br /&gt;        barMapper.doBar();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Moreoved we added support for 3rd parties &lt;a href="http://ibaguice.googlecode.com/svn/site/1.0-SNAPSHOT/datasource.html"&gt;Data Sources&lt;/a&gt;:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;C3P0;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Apache commons-dbcp;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;and a large number of 3rd parties &lt;a href="http://ibaguice.googlecode.com/svn/site/1.0-SNAPSHOT/caching.html"&gt;Cache&lt;/a&gt; implementations:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Ehcache;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Hazelcast;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;JBoss Cache;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Memcached;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;OSCache.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The project is Open Source released under the &lt;a href="http://www.apache.org/licenses/LICENSE-2.0.html"&gt;Apache License v2&lt;/a&gt; and can be found on &lt;a href="http://code.google.com/p/ibaguice/"&gt;google-code&lt;/a&gt;. Feedbacks and contributions are more than welcome, for any question about &lt;i&gt;iBaGuice&lt;/i&gt; you can join the &lt;a href="http://groups.google.com/group/ibaguice"&gt;Mailing List&lt;/a&gt; hosted on &lt;i&gt;Google Groups&lt;/i&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3782645822218400462-5361907535760431572?l=iheartcoding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iheartcoding.blogspot.com/feeds/5361907535760431572/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://iheartcoding.blogspot.com/2010/01/enjoy-power-of-ibatis-3-guice-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3782645822218400462/posts/default/5361907535760431572'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3782645822218400462/posts/default/5361907535760431572'/><link rel='alternate' type='text/html' href='http://iheartcoding.blogspot.com/2010/01/enjoy-power-of-ibatis-3-guice-2.html' title='Enjoy the power of iBatis 3 + Guice 2!'/><author><name>Simo</name><uri>http://www.blogger.com/profile/04398010260610917294</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_ATi2_0wlQVY/S2NlsCxha-I/AAAAAAAAEj0/HY-ApaCVwT0/S220/justme_small.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3782645822218400462.post-4334840231814168982</id><published>2010-01-29T23:50:00.002+01:00</published><updated>2010-01-31T19:26:54.367+01:00</updated><title type='text'>Starting a new life</title><content type='html'>Today, after exactly three years, Asemantics, the semantic web company where I've been worked, due to economical crisis, had to fire her employees, no one excluded, and at the same time, after several months where I've been worked for Goomradio, I terminated my consultant position...&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But an incredible new adventure is waiting for me behind the corner: starting from February 3rd, I'll be officially part of the Sourcesense development team, an amazing group of "black belt" specialists of Open Source products... it seems I found a new home where work.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My name is Simone Tripodi, and this is my first post, looking forward my new professional life... welcome to my new blog.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3782645822218400462-4334840231814168982?l=iheartcoding.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iheartcoding.blogspot.com/feeds/4334840231814168982/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://iheartcoding.blogspot.com/2010/01/starting-new-life.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3782645822218400462/posts/default/4334840231814168982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3782645822218400462/posts/default/4334840231814168982'/><link rel='alternate' type='text/html' href='http://iheartcoding.blogspot.com/2010/01/starting-new-life.html' title='Starting a new life'/><author><name>Simo</name><uri>http://www.blogger.com/profile/04398010260610917294</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://3.bp.blogspot.com/_ATi2_0wlQVY/S2NlsCxha-I/AAAAAAAAEj0/HY-ApaCVwT0/S220/justme_small.png'/></author><thr:total>0</thr:total></entry></feed>
