Hibernate ma stromą krzywą uczenia się, ale ma również następujące zalety:
- Wstawianie/aktualizacje są łatwiejsze dzięki „brudnemu sprawdzaniu”. Po uruchomieniu usługi możesz łatwo dodawać nowe pola bez zmiany wiersza w swojej usłudze. Wystarczy dodać nowe kolumny i wypełnić je, a Hibernate zajmie się częścią dotyczącą trwałości.
- Hibernacja może rozwiązać "utraconą aktualizację" problem ze względu na optymistyczną kontrolę współbieżności blokowania.
- Testowanie integracji jest łatwiejsze, ponieważ możesz automatycznie wygenerować schemat dla swojej bazy danych w pamięci (HSQLDB, H2, Derby)
- Posiada obsługę wtyczek pamięci podręcznej (za pośrednictwem zewnętrznych dostawców pamięci podręcznej drugiego poziomu), niektórzy dostawcy umożliwiają korzystanie zarówno z pamięci podręcznych „transakcyjnych”, jak i „klastrowych”.
- Ma wbudowaną obsługę AUDIT (Envers)
Nie jest to więc „domyślne” rozwiązanie trwałości, ponieważ istnieją miliony aplikacji internetowych napisanych w PHP bez frameworka ORM, które z powodzeniem działają w środowisku produkcyjnym.
Myślę, że Hibernate ma znacznie więcej sensu w zastosowaniach korporacyjnych, w których buforowanie, audyt, niezawodność współbieżności są obowiązkowymi wymaganiami niefunkcjonalnymi.