Zgadzam się z @Timo. Jedyne inne spostrzeżenie, które chciałbym dodać / rozwinąć, to fakt, że ORM ma inną semantykę niż czysty dostęp SQL do twoich danych.
Celem ORM jest abstrahowanie od faktu, że twoje dane w ogóle znajdują się w bazie danych, tak bardzo, jak to możliwe. Kiedy prawidłowo używasz ORM, wszystkie operacje utrwalania są obsługiwane w jednej (miejmy nadzieję) cienkiej warstwie. Twoje obiekty modelu będą miały niewielki lub żaden kod trwałości; fakt, że używasz ORM, powinien być niewidoczny dla twojego modelu.
Z tego powodu ORM bardzo dobrze ułatwia życie w przypadku niektórych rodzajów operacji, a mianowicie prostych operacji CRUD. Możesz ładować obiekty modelu, prezentować je, aktualizować, usuwać w dość łatwy sposób. Ułatwia to życie, ponieważ uzyskując dostęp do danych, otrzymujesz z powrotem obiekty modelu, na których możesz napisać logikę biznesową. Jeśli używasz JDBC, będziesz musiał `` uwodnić '' instancje obiektów na podstawie danych, co może być skomplikowane i podatne na błędy.
ORM nie zawsze jest najlepszym wyborem. JPA to narzędzie do pracy, jeśli narzędzie nie jest wystarczające do pracy, będziesz chciał znaleźć lepsze narzędzie. Na przykład miałem scenariusz, w którym musiałem skopiować cały wykres obiektu i zapisać nową kopię tych obiektów. Gdybym używał ORM (tak jak próbowałem to zrobić), musiałem załadować wszystkie obiekty z bazy danych, następnie skopiować je, a następnie zapisać nowe obiekty. Zajęło mi to zbyt dużo czasu.
Lepszym rozwiązaniem było po prostu użycie operacji opartych na jdbc i wywołań sql typu „insert przez select” w celu utworzenia nowych wierszy. Było szybko, kod był prostszy.
Inną rzeczą do rozważenia jest to, że czujesz się komfortowo z JDBC i masz terminy, nie musisz wskakiwać na modę ORM. Klasy Spring JdbcTemplate są niezwykle wydajne i pomocne. Czasami najlepszym narzędziem do pracy jest to, które znasz. Warto zapoznać się z ORM, ale niekoniecznie przy projekcie o wysokich wymaganiach. Jest wiele do nauczenia się i nie jest to trywialne - tak naprawdę wymieniasz jeden zestaw złożoności z innym, wybierając użycie jdbc vs orm.