Hibernate има стръмна крива на обучение, но има и следните предимства:
- Вмъкването/актуализациите са по-лесни поради „мръсна проверка“. След като имате услугата, можете лесно да добавяте нови полета, без да променяте ред във вашата услуга. Просто трябва да добавите нови колони и да ги попълните и Hibernate ще се погрижи за частта за постоянство.
- Hibernate може да реши "загубената актуализация" проблем поради оптимистичния контрол на едновременното заключване.
- Интеграционното тестване е по-лесно, тъй като можете автоматично да генерирате схемата за вашата база данни в паметта (HSQLDB, H2, Derby)
- Има поддръжка на приставки за кеширане (чрез доставчици на кеширане от 2-ро ниво на трети страни), някои доставчици ви позволяват да имате както „транзакционни”, така и „клъстерни” кешове.
- Има вградена поддръжка на AUDIT (Envers)
Така че това не е „по подразбиране“ решение за постоянство, тъй като има милиони уеб приложения, написани на PHP без ORM рамка, които се изпълняват успешно в производството.
Мисля, че Hibernate има много повече смисъл за корпоративни приложения, където кеширането, одитът, надеждността на паралелност са задължителни нефункционални изисквания.