Koziolek napisał(a)
Po pierwsze są strasznie powolne. Po drugie nie są elastyczne. Po trzecie żadne z nich nie wyprodukuje czystego i eleganckiego kodu. kodowanie zaczynam od napisania klasy - nazwa + pola. W tym JEDNO zaadnotowane jako @Id. Później dwa szybkie skróty klawiaturowe i mam gettery/settery. Po to znam IDE by nie użerać się z powolnymi narzedziami do budowy za pomocą myszy. Tak, mysz jest najpowolniejszym rodzajem narzedzia do wprowadzania danych.
To zalezy.
Nie zgadzam sie z tym, w przypadku database-first. IMO reczne pisanie DDL bazy danych jest znacznie powolniejsze niz wyklikanie diagramu ERD. Nie spotkalem sie jeszcze z dobrym IDE, ktore generuje solidny DDL. Tu klikanie jest znacznie bardziej efektywne. Poza tym dla klienta / menadzerow diagramy ERD sa znacznie latwiej zrozumiale niz kod obiektowy, a jest to bardzo wazne na etapie, gdy wymagania nie sa stabilne. A w takiej sytuacji diagram musze sobie wygnerowac z istniejacej bazy, co jest mniej efektywne niz go wyklikanie (chociazby dlatego, ze automat brzydko ulozy encje na dokumencie np. do wydruku, a bywa ich bardzo duzo). BTW. Moze cos polecicie co wspomaga pisanie DDL na tym poziomie co Java: dobre IDE dla PostgreSQL?
Co do kodu Javy to sie zgadzam, tylko klawiatura (przypadek z code-first). Myszy praktycznie nie uzywam.
Jednak encje dla gotowej bazy i tak szybciej wygenerowac, jedyne co trzeba zrobic wczesniej to zmodyfikowac szablon IDE dla tego typu obiektow (ale to i tak kazdy robi).
Poza tym mając kod mogę od razu przystąpić do pisania logiki, testów i rozwiązań olewając bazę danych. Obecnie realizuję, trochęna boku, projekt gdzie bazy danych jeszcze nie mamy, bo nie ma decyzji co do tego gdzie będzie apka stała i co tam będzie rzeczywiście dostępne (mysql, postgres, mongo, czy oracle EE). I jakoś żyję. Kod piszę, testy robię, a baza... to tylko plugin.
W moim projekcie bylo zupelnie inaczej: bylo do razu wiadomo, ze dostepny bedzie Postgres, bylo to budowanie nowego projektu na bazie starego projektu, bo przepisanie nie bylo mozliwe. Jednak potezna czesc apliacji mozna bylo oddzielic i database oriented design byl dla nas o wiele wygodniejszy. W twoim przypadku jednak tez poszedlbym w code-first. Dzieki za fajny przyklad z zycia wziety.
@student911 tylko że ty stosujesz tutaj podejście database-centric, które moim zdaniem nie jest generalnie specjalnie dobre.
IMO glowna zaleta code-first to tzw. cross-platformowosc, w ktora osobiscie i tak az tak bardoz nie wierze. Bo przenosnosc bedziemy miec tylko na poczatku. W momencie, gdy w projekcie pojawia sie np. procedury skladowe i tak zejdzie to na dalszy plan.
W przypadku, gdybym chcial uzywac bazy NoSQL tez wybralbym code-first.
Panowie: dzieki za uswiedomienie mi waznosci zagadnienia code-first.
Shalom