středa 20. února 2008

Jaký používáte nástroj pro persistency?

Inspirován článkem Is Hibernate the best choice? jsem se rozhodl udělat si malý průzkum, jak je to s čtenáři mého blogu a jimi používanými frameworky pro persistency.

Já osobně jsem si prošel přes používání JDBC, iBatisu až po Hibernate a musím říci, že bych se již zpět nevracel. Můžete namítnout, že Hibernate se nehodí pro všechny typy projektů a já odpovím, že máte pravdu, ale kolik takových případů to bude, jeden, dva z deseti? Nejdříve pár poznámek na účet JDBC a iBatisu.

Nevím jaká je vaše zkušenost s používáním JDBC API, ale ta moje je taková, že bych se k němu nevrátil ani omylem. Ke všemu, aby si člověk napsal nějaký helper. Pokud JDBC, tak jedině přes nějakou vyšší abstrakci např. tu, kterou nabízí Spring. Mám rád iBatis. Ale co je to iBatis? Je to mapování SQL resultsetu do objektového grafu pomocí XML. Pokud hledáte nějaký jednoduchý můstek mezi SQL a objekty, pak je iBatis dobrou volbou. Jenže pokud chcete/potřebujete plnokrevný ORM nástroj, začne iBatisu docházet dech. Na obranu iBatisu, to není jeho chyba. iBatis rozhodně nebyl psán jako náhrada ORM nástrojů.

Předchozím odstavcem jsem si udělal oslí můstek k ORM nástrojům. Přiznávám bez mučení, že k ORM nástrojům mám poměrně vyhrazený postoj a to, že je rozděluji na Hibernate a ten zbytek. Hibernate má celkem dost much, ale neumím si představit, že je tady řešení, které by bylo srovnatelné. Pokud řeknu srovnatelné, měl bych asi říci v jakých oblastech, aby mi mohl někdo namítnout, že existují lepší řešení.

  • podpora legacy databázových schémat viz článek Databázové dědictví a ORM nástroje. Ne všechny projekty si mohou dovolit zahodit databázové schéma a podřídit jej požadavkům ORM.
  • komunita, dokumentace a podpora. Pokud chcete používat něco tak komplexního jako ORM, pak se bez třech výše uvedených ingrediencí neobejdete.
  • variabilita mapovacích metadat. Nemám rád používání anotací všude a ne všechno. Mám rád anotace tam kde mi usnadní zápis metadat oproti XML, což pro některé případy ORM mapování anotacemi nelze říci.
  • extensibilní API a nadstavby. Chci takový ORM framework, který bude v rámci možností možné rozšířit. Moje zkušenost je taková, že plno zdánlivě těžko řešitelných případů, šlo nakonec vyřešit tím, že jsme našli daný Hibernate interface a vložili implementaci. Samozřejmě samotným ORM frameworkem to nekončí, občas chceme nějakou nadstavbu např. fulltextové vyhledávání a potom se hodí pokud ji nemusíme psát sami.

Je zde nějaký nástroj, který dokáže alespoň v jedné z těchto oblastí překonat Hibernate?

pondělí 18. února 2008

Zaseamováno

JBoss Seam všude kam se podíváš - na CZJUGu, v CZ Podcastu. Takže řekněte s námi sííííííííím.