[Java] Data-bound controls - gebruiken, en welke?

Pagina: 1
Acties:

  • MrBucket
  • Registratie: Juli 2003
  • Laatst online: 29-10-2022
Hey allen.

Ik was van plan een beetje met java + postgresql te gaan hobbyen, en toen bedacht ik me dat de java-API zelf geen data-bound controls bevat.
(Met data-bound controls bedoel ik GUI-elementen zoals editboxes en grids waarvan de inhoud ten alle tijden een 1 op 1 relatie heeft met een veld uit de database. Kies je een andere record dan verandert de inhoud van zo'n control, wijzig je de inhoud van zo'n control dan wordt het bijbehorende veld in de database geupdated).

Ik weet van Borland dat bij hun JBuilder wel data-bound controls werden geleverd (waarschijnlijk in navolging van Delphi), maar voor de rest zijn er volgens mij weinig echt bekende implementaties beschikbaar. (Ik heb er zelf 2 kunnen vinden: SwingSet en JForm, de laatste is niet vrij beschikbaar, lijkt het). Verder is er op Hans Muller's Blog een aardige lijst van swing libraries te vinden.

Nu, mijn vragen:
1) Welke libraries gebruiken jullie om in java de data uit een database in een UI te tonen en te editen?
2) Zijn er redenen om geen data-bound controls te gebruiken? Zo ja, welke alternatieven zijn er dan nog voorhanden?

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

MrBucket schreef op zondag 10 april 2005 @ 21:09:
2) Zijn er redenen om geen data-bound controls te gebruiken? Zo ja, welke alternatieven zijn er dan nog voorhanden?
Wanneer een editveld in directe verbinding staat met datgene wat er in de database zit, dan pas je dus direct dingen aan in de database. Verder locken de meeste van deze controls je table (of in het beste geval: je record) zodat multi-user functionaliteit aardig beperkt kan worden. Ik heb dan ook altijd geleerd om niet van dit soort controls te gebruiken, maar ze zelf te implementeren.

offtopic:
Overigens maakt JBuilder voor zover ik weet net zoals Delphi gebruik van de VCL, dus het is geen navolging van Delphi, maar een implementatie van dezelfde controls als je in Delphi hebt. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • MrBucket
  • Registratie: Juli 2003
  • Laatst online: 29-10-2022
-NMe- schreef op zondag 10 april 2005 @ 21:21:
[...]

Wanneer een editveld in directe verbinding staat met datgene wat er in de database zit, dan pas je dus direct dingen aan in de database. Verder locken de meeste van deze controls je table (of in het beste geval: je record) zodat multi-user functionaliteit aardig beperkt kan worden. Ik heb dan ook altijd geleerd om niet van dit soort controls te gebruiken, maar ze zelf te implementeren.
Hmm, ok. Heeft te maken met locking dus.
Op de HTS waar ik op heb gezeten gebruikten ze een administratiesysteem dat werd geimplementeerd in Delphi met data-bound controls. Ik weet nog dat toen ons dat werd uitgelegd, dat er ook een heel verhaal over de voors en tegens van locking werd uitgelegd, tezamen met optimistic en pessimistic locking en commit/rollbacks. En ik meen me ook te herinneren dat deze dingen in Delphi te configureren waren (of was dit een eigenschap van de gebruikte RDBMS?)
offtopic:
Overigens maakt JBuilder voor zover ik weet net zoals Delphi gebruik van de VCL, dus het is geen navolging van Delphi, maar een implementatie van dezelfde controls als je in Delphi hebt. ;)
Hmm, lijkt me vreemd. Ik heb tegenwoordig geen JBuilder meer tot mijn beschikking, maar wat ik me er van kon herinneren was dat de controls pure java-classes waren, dwz dat ze geen extra DLLs oid nodig hadden om te functioneren.
Wel is het zo dat de GUI van JBuilder vroeger (versie 2 ofzo) een 'echte' windows GUI had, die misschien wel gebruik maakte van de Borland VCL (latere versies van JBuilder hadden de Java Metal look'n'feel). Maar ik dacht dat je geen specifieke DLLs nodig had voor de data-bound controls?

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

MrBucket schreef op zondag 10 april 2005 @ 23:07:
Hmm, ok. Heeft te maken met locking dus.
Op de HTS waar ik op heb gezeten gebruikten ze een administratiesysteem dat werd geimplementeerd in Delphi met data-bound controls. Ik weet nog dat toen ons dat werd uitgelegd, dat er ook een heel verhaal over de voors en tegens van locking werd uitgelegd, tezamen met optimistic en pessimistic locking en commit/rollbacks. En ik meen me ook te herinneren dat deze dingen in Delphi te configureren waren (of was dit een eigenschap van de gebruikte RDBMS?)
Bij mijn weten is het niet te configureren, maar ik moet eerlijk bekennen dat ik het nooit geprobeerd heb, omdat ik altijd gehoord heb dat die dingen vies zijn. :P Pas per ongeluk wat aan in het verkeerde edit-veld, en je bent je data kwijt. :)
Hmm, lijkt me vreemd. Ik heb tegenwoordig geen JBuilder meer tot mijn beschikking, maar wat ik me er van kon herinneren was dat de controls pure java-classes waren, dwz dat ze geen extra DLLs oid nodig hadden om te functioneren.
Wel is het zo dat de GUI van JBuilder vroeger (versie 2 ofzo) een 'echte' windows GUI had, die misschien wel gebruik maakte van de Borland VCL (latere versies van JBuilder hadden de Java Metal look'n'feel). Maar ik dacht dat je geen specifieke DLLs nodig had voor de data-bound controls?
Zou best kunnen hoor, vandaar ook dat ik zei "voor zover ik weet". Ik meen dat de kracht van de Borland producten juist is dat ze allemaal hetzelfde framework gebruiken, maar het kan best zijn dat ze dat voor JBuilder geheel opnieuw geïmplementeerd hebben. Ik vind er zo snel even niets over terug. :)
edit:
Ik hoor net dat dit laatste alleen opgaat als je voor Windows buildt, anders niet. :P

[ Voor 3% gewijzigd door NMe op 10-04-2005 23:53 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • MrBucket
  • Registratie: Juli 2003
  • Laatst online: 29-10-2022
Ok, maar welke alternatieven zijn er voor handen als ik geen gebruik wil maken van data-bound controls?

Ik heb bijvoorbeeld de naam Hybernate wel eens horen vallen, maar dat is geloof ik meer een mapper tussen het object-model en het relationele model, of niet?

Ik heb ook ooit wel eens gelezen dat het handig kan zijn een code-generator in te zetten, die voor elke tabel in de database 4 functies creeert (create, read, write, delete) waarmee een rij benaderd kan worden. Het voordeel is dan dat als de layout van de database veranderd, deze functie-definities ook veranderen en een compile-time fout genereren. Aan de andere kant betekent dit wel een functionele ipv OO-aanpak. En je zult dus voor elk venster wat je creeert handmatig je database-acties toe moeten voegen.

Welke mogelijkheden heb ik nog meer?

Verwijderd

Alternatieven? Zelf doen en het zelf in de hand houden. :)
Het enige data aware control dat ik gebruik is een DBGrid-afgeleide, en dan ook nog uitsluitend read-only.

En wanneer je je datamodel zoveel mogelijk laat aansluiten bij je objectmodel maakt 't niet zo gek veel uit of 't functioneel of OO "voelt". OO is niet heilig, maar wanneer je eenmaal de OO-denkwijze te pakken hebt, zul je merken dat je 't wel steeds vaker zult gebruiken. Ook in situaties waar OO helemaal niet aan de orde is (low level IP-verkeer bijvoorbeeld).

  • FendtVario
  • Registratie: Januari 2002
  • Laatst online: 12-05-2025

FendtVario

The leader drives Vario!

Verwijderd schreef op maandag 11 april 2005 @ 15:40:
Alternatieven? Zelf doen en het zelf in de hand houden. :)
Het enige data aware control dat ik gebruik is een DBGrid-afgeleide, en dan ook nog uitsluitend read-only.
Je hebt het toch niet over Delphi he ;).

In java kun je vrij makkelijk deze awareness maken door gebruik te maken van de models die de swing componeten gebruiken.

[ Voor 17% gewijzigd door FendtVario op 11-04-2005 15:55 ]

www.fendt.com | Nikon D7100 | PS5

Pagina: 1