[Java] Hibernate tools

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • wibra
  • Registratie: Januari 2005
  • Laatst online: 09-09 23:18
Na 5 jaar zonder programmeren, heb ik besloten om er terug in te duiken.

Bij mijn vorige werkgever hadden we een in-house framework dat (onder andere) voor persistentie zorgde, compleet met caching. Dit werkte heel fatsoenlijk en was uiteindelijk voor de "eindprogrammeerder" heel gebruiksvriendelijk.

Nu zijn we een paar jaar verder, en ik kon me eigenlijk niet voorstellen dat zoiets gelijkaardigs niet in open-source bestaat, zodoende kwam ik uit bij Hibernate.

Ik heb nu een paar tutorials gelezen (nog niet echt gedaan), maar de meeste gaan uit van een voorbestaande database die je importeert en zodoende configfiles genereert, ofwel handgeschreven config-files.

Bij die vorige werkgever hadden we een soort grafische tool waar je je business objects intypte en die aan elkaar linkte. Inheritance werd ook ondersteund, je kon dus een object kwijt in een tabel die nog andere velden had, maar die niet gebruikt werden voor dat specifiek object maar misschien wel voor een subclass.

Die tool genereerde dan alle DB-generation statements, de nodige config-files, en meteen ook alle business object classes in Java.

Nu is mijn vraag: bestaat zo een tool ook in Open Source? Of desnoods een betaalde tool? Ik zag wel dat er "hibernate tools" bestaan van JBoss, maar dat draait enkel op Eclipse. Ik zoek liever iets stand-alone of iets dat draait op IntelliJ Idea.

Acties:
  • 0 Henk 'm!

  • Ozzie
  • Registratie: Februari 2004
  • Laatst online: 23:39
Met gewoon hibernate kan alles wat je hierboven beschrijft. Daar zijn geen losse tools voor nodig. Het is alleen niet grafisch maar gewoon in Java. Maar bijvoorbeeld relaties kan je gewoon deniëren in je entiteiten met @ManyToOne, @OneToMany, @OneToOne e.d.

Inheritance kan op verschillende manieren. Bijvoorbeeld een tabel met ongebruikte velden maar ook door losse tabellen die gejoined worden.

met JPA/Hibernate heb je eigenlijk helemaal niet zoveel configuratie nodig. Alleen een persistence.xml om je datasource in aan te geven en de rest kan je allemaal met annotaties oplossen.

Ik zou de JPA tutorial van oracle eens volgen, daarin staat erg veel uitgelegd. Introduction to the Java Persistence API

Hibernate is trouwens (onder andere) een JPA-implementatie. JPA is de standaard voor persistence in Java EE.

"Write code as if the next maintainer is a vicious psychopath who knows where you live."


Acties:
  • 0 Henk 'm!

  • Yankovic
  • Registratie: Juli 2007
  • Laatst online: 10:39
Ik ben zelf nooit zo'n voorstander van SQL statements genereren uit mijn model. Hiervoor moet je namelijk ook alle foreign keys, unique constraints en indexes etc. in je model gaan benoemen. Dat hoort in mijn ogen (met misschien een paar uitzonderingen) thuis in de database zelf en niet in je code.
Tevens vraag ik mij af hoe gemakkelijk je bij wijzigingen in je model ook gemakkelijk een goede ddl voor updates kan genereren bij nieuwe versies van je applicatie.

Wat ik zelf veel gebruik om databases mee te managen is Liquibase (http://www.liquibase.org). Hiermee schrijf je je hele database ontwerp in XML en Liquibase update je database vervolgens helemaal zoals jij hebt opgegeven. Vrijwel alle databases worden door Liquibase ondersteund waardoor het ook redelijk gemakkelijk is om naar een andere database over te stappen (bv van MySQL naar postgres).
Het lijkt vooraf wat gedoe om je hele database in XML te definieren. Echter is het updaten een stuk gemakkelijker omdat je met changesets werkt waardoor Liquibase precies weet wat al wel en wat nog niet is uitgevoerd op jouw database.

Verder zoals Ozzie aangaf kan je inderdaad het beste JPA gebruiken. Heb je aan één redelijk standaard XML (bij simpele applicaties nog geen 10 regels) genoeg.