[hibernate] dynamisch tabellen aanmaken en mappen

Pagina: 1
Acties:

  • oogapp0ltje
  • Registratie: Januari 2001
  • Niet online
ik wil een systeem ontwikkelen waarbij de gebruiker zelf tables kan aanmaken en vervolgens zelf ook HSQL queries kan uitvoeren op deze tabellen (in een GUI uiteraard). nu ben ik wat aan het lobbyen en ik zie vooral dat je twee strategien hebt om in hibernate je mappings te definieren, enerzijds in een mappingfile, anderzijds via annotations (correct me if i'm wrong). De manier waarop deze mappings dus gedefinieerd worden lijken mij op het eerste gezicht vrij statisch.

Mijn vraag is, hoe kan ik in hibernate een 'dynamische' binding maken tussen code en dbms? Ik wil dat een gebuiker zelf een tabel kan aanmaken en automatisch mapped naar een (door de eindgebruiker geselecteerde) reeds bestaande klasse, maar ik wil niet dat hiervoor een programma-restart nodig is!

Is dit mogelijk met hibernate? of moet ik toch maar zelf een ORM gaan schrijven om dit te kunnen bewerkstelligen :'(?

| To acknowledge what is known as known and what is not known as known is knowledge. |


  • rrrandy
  • Registratie: Juli 2005
  • Laatst online: 27-06 13:00
Er is in principe geen restart van je applicatie nodig, je moet alleen je mappings herladen.

Ik vind dit toch wel erg spannend hoor. Heb je nagedacht over hoe je je database consistent wilt gaan houden?

  • oogapp0ltje
  • Registratie: Januari 2001
  • Niet online
rrrandy schreef op dinsdag 07 november 2006 @ 11:01:
Heb je nagedacht over hoe je je database consistent wilt gaan houden?
goed punt, maar volgens mij is het hibernate die hier de verantwoordelijkheid overneemt voor de persistance en consistency of niet? daar komt bij dat ik mij niet zo druk maak over consistency vanuit dbms -> code omdat de applicatie die ik in gedachten heb louter exclusieve access heeft tot de database (er zijn geen andere apps die gebruik maken van de db).

| To acknowledge what is known as known and what is not known as known is knowledge. |


  • rrrandy
  • Registratie: Juli 2005
  • Laatst online: 27-06 13:00
Ravenof schreef op dinsdag 07 november 2006 @ 11:23:
[...]
goed punt, maar volgens mij is het hibernate die hier de verantwoordelijkheid overneemt voor de persistance en consistency of niet? daar komt bij dat ik mij niet zo druk maak over consistency vanuit dbms -> code omdat de applicatie die ik in gedachten heb louter exclusieve access heeft tot de database (er zijn geen andere apps die gebruik maken van de db).
Ik weet niet hoe flexibel jij de mappings wilt gaan maken en of de gebruiker ook update rechten krijgt?

Scenario:
- je hebt een not-null veld
- de gebruiker verwijderd dit veld uit de mapping
- de gebruiker gaat data inserten
-> error, want het veld is null

Nog even wat andere dingen:

Stel je hebt een parent-child relatie over twee tabellen. Dan heeft iedere child onder hetzelfde id een record in de parent tabel staan. Stel nu dat de gebruiker de parent tabel niet meer mapt en de child dus een zelfstandige class is geworden. De foreign key op database niveau bestaat nog steeds, maar daar wordt vanuit de code niet meer aan voldaan en dus kan de gebruiker in de 'child'-tabel niets meer inserten zonder een constraint violation.

Dit geldt natuurlijk algemeen voor constraints. Deze worden in de database vastgelegd, wanneer je met je mappings gaat klooien zonder ook op databaseniveau te kijken kun je er donder op zeggen dat de violations je om de oren gaan vliegen.

[ Voor 32% gewijzigd door rrrandy op 07-11-2006 11:36 ]