Myślisz, że zarabiasz tyle, na ile zasługujesz? Zapraszamy do wzięcia udziału w anonimowej ankiecie.
3

1

Który ORM będzie lepszy? nHibernate czy Entity Framework?

W tej chwili programiści używają "jakichś" własnych klas opartych na połączeniach ODBC. Ja osobiście miałem styczność z nHibernate i sobie chwalę. Reszta programistów wzrusza ramionami i mówi że im to obojętne.

Firma woli zapłacić za adaptery do nie MSSQLowych baz niż korzystać z OpenSource ale to akurat da się przewalczyć.

  • Mieliście styczność z adapterami do niżej wymienionych baz i możecie coś o nich powiedzieć?
  • Macie własne doświadczenie przy używaniu tych ORMów z różnymi bazami?

Projekty muszą współpracować (zamiennie) z bazami:

  • MS SQL 2000-2008
  • MySQL 5 i nowsze
  • Oracle 9 i nowsze
flag
Dlaczego wymieniasz tylko nH i EF? LINQ nie wchodzi w grę? – rafek Jan 8 at 11:06
1 
LinqToSql jest tylko dla MSSQL i dodatkowo nie jest już rozwijane. – Robert Gonek Jan 26 at 19:39
to ja dodam ze jeszeli musza wspolpracowac z bazami MySQL i Oracle to raczej nie ma co dyskutowac, nHibernate i tyle. EF ma wsparcie poprzez dodatkowe moduly, providery ale nie naleza one do jakis super specjalnych i super ekstra dzialajacych. – Gutek May 14 at 16:47
Ja właśnie testuję EF4 z SQLite i póki co wszystko pięknie... – twk May 14 at 21:13

7 Answers

1

"ORM to wkładanie okrągłych klocków do kwadratowych dziur." To masz ulta-kontrowersyjne poglądy;). Owszem świat relacyjnych baz danych i obiektowych aplikacji to dwa różne światy. Da się te światy połączyć, używać razem i to działa - a nazywa się to ORM.

link|flag
0

Zdecydowanie nhibernate jest lepszy, pozwala oddzielić domenę od warstwy dostępu do danych, nie wymaga integrcji w klasy (jedynie trzeba określać metody jako virtual). nHibernate wydaje się znacznie dojrzalszym projektem.

link|flag
0

ORM, który obsługuje wszystkie wymienione przez Ciebie bazy to LLBLGen. Generuje DAL'a na podstawie schematu bazy. Ma jednak dwa minusy. Nie operuje na POCO, a za konektor do MySqla trzeba dodatkowo zapłacić. Dostępna jest do ściągnięcia wersja testowa.

http://www.llblgen.com/

link|flag
0

"jedynie trzeba określać metody jako virtual"

Oczywiście nie trzeba!!!

Trzeba tylko wtedy, gdy chce się skorzystać z dobrodziejstwa typu LazyLoading :)

link|flag
0

Zdecydowanie nHibernate jest bardziej dopracowany, Entity Framework stwarza sporo problemów.

link|flag
0

Powiem tak: to zależy. Wiele zależy od kontekstu. Jak z wieloma bibliotekami, niektóre sprawiają się lepiej w jednych scenariuszach, inne w drugich.

link|flag
-1

ORM to wkładanie okrągłych klocków do kwadratowych dziur. Jeśli aplikacja zajmuje się przetwarzeniem danych relacyjnych, to kod żródłowy powinien modelować dane używając abstrakcji relacyjnych a nie obiektowych.

Szerzej na ten temat w http://www.codinghorror.com/blog/2006/06/object-relational-mapping-is-the-vietnam-of-computer-science.html

Polecam rozwiązanie #6.

link|flag
Rozwiązanie #6 polecasz... komu? Chyba nie programiście który po prostu ma projekt do napisania? W takich sytuacjach nie próbuje się startować z rewolucją tylko stosuje sprawdzone praktyki. Rada "albo obiekty albo relacje" to żadna rada, bo nie rozwiązuje problemu tylko stwarza nowe. Oczywiście że jest "mismatch" pomiędzy tymi światami, ale trzeba sobie z nim radzić w praktyce - właśnie za pomocą ORMów. Teoretyzować o "trzymaniu wszystkich danych w datasetach" owszem, można, ale nie w prawdziwym projekcie. W takie coś można bawić się w domowym zaciszu po pracy. – Procent Apr 16 at 17:59
2 
I jeszcze jedno - zauważ że podlinkowany Jeff Atwood jest jednym z autorów portalu na którym się znajdujemy... a czy mamy tu do czynienia z porzuceniem ORM? Skądże znowu - wszystko pięknie śmiga na Linq2Sql. Gdy w grę wchodzi biznes to robi się tak aby program sprawnie działał, a nie tak aby zbawić ludzkość. – Procent Apr 16 at 18:01
@Procent. Moja odpowiedź miała na celu wskazanie różnych podejść do problemu ORM, z których każde ma swoje mocne i słabe strony. Nie twierdzę, że rozwiązanie #6 jest najlepsze w każdym przypadku, podobnie jak nie jest nim ORM. To zależy od tego jakie narzędzia/języki już się zna, poziomu skomplikowania systemu, potrzeb wydajności, kontroli na kodem, itp. – Jacek Apr 19 at 11:30
Na dowód, że podejścia inne niż ORM istnieją i też się sprawdzają w praktyce, można podać inny popularny portal dla programistów: dzone.com, który korzysta z iBatis. Uzasadnienie znajduje się tutaj: mail-archive.com/dev@ibatis.apache.org/… To, że Jeff Atwood był jednym z autorów stackoverflow, to nie znaczy, że implementował warstwę dostępu do danych. Tym samym potwierdza to fakt, że wybór zależy od konkretnej sytuacji. – Jacek Apr 19 at 11:31

Your Answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.