Saturday, April 2, 2011

Adéu iBatis. Hola MyBatis

L'altre dia comentava una API d'accés a bases de dades des de Java, el JPA. També comentava que un petit inconvenient de JPA és que el teu model de dades s'ha d'adaptar a l'eina i no pas a l'inrevés. La manera d'enfocar el problema objecte-relacional és des del punt de vista dels objectes.

Com la nostra realitat no ho permet un canvi en el model de dades, havíem de buscar alternatives, que permetessin fer accessos SQL. Com que el JDBC directe és insuportable (try-catch-finally fins la mort) calia una bona API. Els JdbcTemplate de Spring era una opció, però els RowMappers són un rotllo. Així que vaig anar a buscar a un vell conegut: iBatis.

En buscar referències vaig veure que el projecte ja no existia. L'autor, Clinton Begin, havia portat el projecte de Apache a Google Code i l'havia canviat el nom. Ara es diu MyBatis.

La virtut d'iBatis (i del nou MyBatis 3) és que tot el SQL és a fitxers XML, i que el mapeig a objectes pot ser molt sofisticat i és molt senzill de fer. A més a més proporciona mecanismes de caché i s'integra amb facilitat amb Spring i ehcache (entre d'altres).

MyBatis canvia algunes coses respecte a iBatis i simplifica molt la vida, reduint el codi de configuració. Aquesta versió (la 3), dóna l'opció de definir les consultes directament al codi Java, mitjançant annotations, però no em sembla una cosa que faré servir.

Portem uns dies fent proves amb consultes molt complexes (crides PL/SQL, ús d'ARRAYs, CLOBs, etc) i de moment estic molt content. I les consultes fàcils no tenen cap mena de complicació.

Ara només queda no cometre els errors de sempre i començar a pensar en objectes des del primer dia. Aplicant TDD i considerant les caché des del primer moment estic segur de que ens ensortirem.

No comments: