Mi è stato chiesto molte volte, anche su Guisa esiste un bel
thread sul confronto di questi tre
ORM, quindi ne ho approfittato per fare una matrice che incrocia le feature di questi tre prodotti. Ahime non ho ancora qualche informazione su
Entity Framework e consideranto che quest'ultimo è ancora in CTP,la sua colonna potrebbe essere passibile di modifiche.
Ho usato il simbolo "??" nelle feature di cui non ho ancora conoscenza.
Siete invitati a propormi qualche eventuale feature su sui trovare i confronti, terrò aggiornata la tabella.
|
NHibernate |
Linq to SQL |
Entity Framework |
Mapping con Attributi |
Si |
Si |
Si |
Mapping con XML |
Si |
Si |
Si |
Persistenza Trasparente |
Si |
Parziale.
Per la gestione delle collezioni e dei proxy bisogna usare dei tipi specifici |
Parziale allo stato attuale. Le entity devono implementare una interfaccia |
Persistenza Transitiva |
Si |
No |
No |
Strategie di Fetching |
Si |
Si |
Si |
Strategie di Ereditarietà |
Tutte le strategie |
Solo la Table per Hierarchy |
Tutte le strategie |
Mapping Entity su più tabelle |
Previsto il porting da Hib 3.2 |
No |
Si |
Mapping di Value Type |
Si |
No |
Si |
Linguaggio di interrogazione a oggetti |
HQL (stringhe) |
Linq applicato a DataContext |
Linq to Entities (applicato a ObjectContext) per c# e vb.net.
eSQL (stringhe) per tutti i linguaggi. |
Lazy load |
Si |
Si |
Si |
Mapping di chiavi composite |
Si |
Si |
Si |
Multi-database vendor |
Si |
No |
Si |
Tracking stato entity |
Contesto di Persistenza. |
Contesto di Persistenza o Entity |
?? |
Identity Map |
Si |
Si |
Si |
Caching di entity e query |
Si |
No |
?? |
Estendibilità |
Molto granulare. Architettura a plug-in in molte parti. |
Poco granulare. IQuerableProvider è molto complesso. |
?? |
Disponibilià |
Immediata |
Da novembre in poi |
da metà del 2008 in poi |
Supporto a pagamento |
Red Hat |
Microsoft |
Microsoft |
Nota:
Si!...sono tutti e tre degli ORM...con feature più o meno evolute...ma la sostanza è quella.