Hibernate har en brant inlärningskurva men det har också följande fördelar:
- Infoga/uppdateringar är lättare på grund av "smutsig kontroll". När du väl har tjänsten på plats kan du enkelt lägga till nya fält utan att ändra en rad i din tjänst. Du behöver bara lägga till nya kolumner och fylla i dessa så tar Hibernate hand om beständighetsdelen.
- Hibernate kan lösa "förlorad uppdatering" problem på grund av dess optimistiska låsning samtidighetskontroll.
- Integrationstestning är enklare eftersom du kan generera schemat automatiskt för din databas i minnet (HSQLDB, H2, Derby)
- Den har ett plugin-program för cachning (genom tredje parts leverantörer av caching på andra nivån), vissa leverantörer tillåter dig att ha både "transaktionella" och "klustrade" cacher.
- Den har ett inbyggt AUDIT-stöd (Envers)
Så det är inte en "standard" persistenslösning, eftersom det finns miljontals webbappar skrivna i PHP utan ORM-ramverk som körs framgångsrikt i produktion.
Jag tror att Hibernate har mycket mer mening för företagsapplikationer där cachning, granskning, samtidighetstillförlitlighet är obligatoriska icke-funktionella krav.