Toon posts:

[EJB3 / Hibernate3] Waarom nog Hibernate leren?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Sinds kort ben ik de eerste stapjes aan het maken in Hibernate, logisch want ik krijg gewoon steeds meer te maken met databases. Op het moment ben ik dan ook bezig het boek "Beginning Hibernate" van Dave Minter & Jeff Linwood door te nemen.

Wat mij alleen al direct aan het eind van hoofdstuk 1 opviel was het volgende: "The forthcoming standard for the next incarnation of EJB has been developed as JSR2.0, and includes an EJB ORM standard". Verder wordt er vermeld dat de ontwikkelaars van Hibernate nauw betrokken zijn bij het ontwikkelen van de nieuwe EJB.

Verder wordt ik op de hoogte gesteld van de nieuwe EJBQL die weer veel verwantschap vertoond met HQL. Nu vraag ik mij dus af; is het überhaupt nog wel nuttig tijd te besteden aan Hibernate nu EJB3.0 zijn intrede heeft gedaan? Als ik dit lees denk ik persoonlijke dat ik de tijd beter in EJB kan steken.

Wat zijn jullie meningen hierover, en wat voor voordelen biedt het gebruik van Hibernate of EJB boven het gebruik van de andere?

  • Marv
  • Registratie: Oktober 2000
  • Laatst online: 19-05-2021
Een reactie over een soortgelijke topic van theserverside.com:
EJB3 is a spec written by the JCP and it is left to others to provide implementations. As it so happens, the lead developer for Hibernate is on the advisory board for EJB3 and Hibernate provides full support for EJB3.

So if you already are using Hibernate, you can continue to do so even if you want to migrate to the EJB3.
http://www.theserverside....hread.tss?thread_id=38800

Ik ben zelf niet zo thuis in EJB3, maar vind het wel interessant, dus ik houd deze topic ook in de gaten :)

"Everything I've ever done or said is the complete opposite of what I've wanted" -- George


  • JKVA
  • Registratie: Januari 2004
  • Niet online

JKVA

Design-by-buzzword fanatic

Ik ben momenteel bezig met certificeren voor EJB 3, maar ik merk dat de JPA (Java Persistency API) in zijn huidige toestand beduidend minder sterk is dan Hibernate. Aan de andere kant houdt EJB weer veel meer in dan Hibernate, zoals messaging, web services, security, transacties, etc.

Detail: EJB 3 en JPA doen geen enkele uitspraak over de implementatie ervan. Dat wordt overgelaten aan de vendors. En moet je eens raden welk ORM door JBoss gebruikt wordt? Juist, Hibernate. Dus je kennis is nooit weg.

Het is wel lastig om een goed antwoord te geven op je vraag, aangezien het gebruiken van bijvoorbeeld de Criteria API uit Hibernate (zul je waarschijnlijk vaak nodig hebben) weer tot vendor lock in leidt.

Maar aan de andere kant moet je ook weer kijken wat momenteel gangbaar is en dat is duidelijk Hibernate. Met een goede Hibernate kennis kun je volgens mij gemakkelijk nog een paar jaar vooruit, zeker omdat momenteel waarschijnlijk nog weinig architecten voor Java EE 5 durven te kiezen. Bovendien is er online nog lang niet zo veel support voor EJB3 als voor Hibernate.

En als je Hibernate eenmaal kent, kun je alle concepten uit de JPA prima plaatsen en is de overstap een eitje. Puur even wat termen in je hooft stampen, zoals dat je Session geen Session meer heet maar EntityManager.

Dus... voorlopig zou ik voor Hibernate gaan.

Fat Pizza's pizza, they are big and they are cheezy


  • -FoX-
  • Registratie: Januari 2002
  • Niet online

-FoX-

Carpe Diem!

JPA is een specificatie. Deze wordt onder andere geïmplementeerd door Hibernate. Het grote verschil is dat er aan Hibernate constant verder gesleuteld wordt. Hierdoor kan je ook steeds profiteren van de nieuwe features die deze met zich meebrengt. Dat je dan vendor-lock in hebt is misschien een 'nadeel', al zie ik niet direct een echt nadeel hieraan. Je gaat toch niet zo makkelijk switchen van vendor eens die keuze gemaakt is... tenzij het een erg slechte keuze was. En ik denk niet dat je deze hier kan maken.

EJB3 is een hele verbetering tov EJB2.x; maar is wel een specificatie en standaard. Je kan dit zien als een soort van snapshot in een ontwikkeltraject. Op een bepaald punt wordt deze bevroren en komen er geen nieuwe features meer bij. Daar deze specificatie zichzelf nog niet bewezen heeft, kan deze dan ook niet meer zo flexibel inspelen op de noden van de community. Er moet weer een log proces gestart worden om hierin verandering te brengen. Dit probleem heb je met Hibernate niet. Deze wordt gedragen door de community en zal daarom net ook niet snel verdwijnen.

Kies je voor features en flexibiliteit, ga dan gerust voor Hibernate. Kies je voor zekerheid en standaarden, dien je je op EJB3 te richten. Nu hoef je dit natuurlijk ook niet zo zwart/wit te stellen. Waarom kan je niet gebruik maken van beiden? Het doel is om je dan zoveel mogelijk aan de specificatie te houden, maar als je de Hibernate implementatie kiest; kan je nog altijd voor de Hibernate specifieke functies en kracht kiezen. Uiteindelijk is EJB3 (JPA) volledig gebaseerd op Hibernate.