Το ποιό mapper θα χρησιμοποιήσεις δεν είναι μια απλή επιλογή. Κάθε εργαλείο έχει τα δικά του χαρακτηριστικά, π.χ. υποστήριξη caching, ανεξάρτητο μοντέλο, ή μοντέλο βασισμένο στη βάση, υποστήριξη/δημιουργία stored procedures. Η επιλογή του εργαλείου θα επηρρεάσει και το πως σχεδιάζεις την εφαρμογή σου.
Αν για παράδειγμα, το ORM που θα επιλέξεις δεν υποστηρίζει views και stored procedures, θα αναγκαστείς να δώσεις permissions απευθείας στους πίνακες και η εφαρμογή σου θα είναι ευαίσθητη σε αλλαγές που μπορεί να γίνουν στην βάση στο χώρο του πελάτη. Υπάρχουν από την άλλη ORM που θα δημιουργήσουν αυτόματα τα κατάλληλα stored procedures και views, αλλά δεν θα έχουν ενσωματωμένο caching ή την δικιά τους γλώσσα για queries.
Όσον αφορά τα stored procedures, τα υποστηρίζει το Hibernate3 αλλά όχι το nHibernate στην παρούσα έκδοση του. Προσωπικά θα το χρησιμοποιούσα μόνο αν ήμουν σίγουρος ότι η εφαρμογή μου δεν χρειάζεται περίπλοκο σχήμα και οι απαιτήσεις ασφαλείας είναι απλές και περιορισμένες. Τώρα μάλιστα που θα υπάρχει η δυνατότητα να γραφτούν stored procedures σε .ΝΕΤ για τον SQL Server, θα απέφευγα ένα ORM που θα με εμπόδιζε να τις χρησιμοποιήσω στο μέλλον.
Θα βρεις μια πολύ καλή λίστα με κριτήρια επιλογής για ORM στο http://madgeek.com/Articles/ORMapping/EN/mapping.htm
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos