Toon posts:

[Java] teruggave objecten uit databank *

Pagina: 1
Acties:

Verwijderd

Topicstarter
hoi Tweakers

ik heb een programma om mijn dvd's bij te houden geschreven

nu om bvb de genres uit mijn collectie te halen heb ik volgende oplossing bedacht

public Dvd getGenres(){
//sql statement
return new Dvd(rs.getString(1), rs.getString(2), en nog vele ander waarvan je uiteindelijk gewoon rs.getString(1) gaat gebruiken omdat daar het genre insteekt (de rest is dus eigenlijk overbodig

of zouden jullie gewoon het als volgt doen

public ArrayList getGenres(){
//sql statement
ArrayList dvd = new ArrayList();
do while(rs.next())
dvd.add(rs.getString(1);
}

return dvd;
}

wat zouden jullie doen business klassen teruggeven of arraylist klasse met enkel strings in (ik denk dat het mooer is met business klassen maar ja dat is wel meer implementatie werk, maar dan blijft alles consistent of is het voor databanken niet echt nodig dat het consistent is ?

alvast dank

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Ik vind het allemaal maar een beetje vaag eerlijk gezegd. Waarom gebruik je in vredes naam een object DVD voor het ophalen van je genres? En waarom noem je je var dvd als je genres ophaalt en geen dvd's? Je wilt blijkbaar een collectie items ophalen dus lijkt het me vrij voor de hand liggend om een collection te gebruiken. Welke het wordt is gewoon puur afhankelijk van de situatie. Maar heb je geen class voor een genre? Anders wordt het toch tijd om eens een goed domein model op te zetten voordat je hiermee begint.

Noushka's Magnificent Dream | Unity


Verwijderd

Topicstarter
genre is een attribuut bij mijn dvd klasse, aangezien dat enkel maar 1 string moet bijhouden dacht ik dat dat dan als attribuut mocht worden gedeclareerd

  • whoami
  • Registratie: December 2000
  • Laatst online: 16:06
Je zult toch in je databank wel een tabel hebben waar alle mogelijke genres zijn opgeslagen ?

Waarom maak je dan bv. ook geen 'Genre' class en een 'GenreCollection' ?

https://fgheysels.github.io/


  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Maar ik begrijp je eerste methode nog steeds niet. Hij heet getGenres, maar je returned een Dvd object. Zou je dat eens kunnen toelichten?

Noushka's Magnificent Dream | Unity


Verwijderd

Topicstarter
ok goed idee maar voor 1 attribuut op te slaan is dat niet wat overkill?

Verwijderd

Topicstarter
Michali schreef op maandag 17 januari 2005 @ 17:25:
Maar ik begrijp je eerste methode nog steeds niet. Hij heet getGenres, maar je returned een Dvd object. Zou je dat eens kunnen toelichten?
ja om dat dvd een genre bevat daarom had ik dat zo gedaan begrijp je en ik wou een object retourneren uit mijn database

  • whoami
  • Registratie: December 2000
  • Laatst online: 16:06
Verwijderd schreef op maandag 17 januari 2005 @ 17:26:
ok goed idee maar voor 1 attribuut op te slaan is dat niet wat overkill?
Blijkbaar niet, want ik snap in ieder geval niet wat je nu wilt bereiken ?
Je returned nu 1 DVD object waarin alle genres inzitten ??

https://fgheysels.github.io/


  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Ligt er puur aan wat je allemaal met een genre wilt gaan doen. Ik verwacht eigenlijk wel dat er code gaat komen die puur betrekking heeft op een genre object. Dan is het toch wel gemakkelijk om daarvoor een aparte class te hebben. En het is zo overduidelijk een apart concept.

Noushka's Magnificent Dream | Unity


Verwijderd

Topicstarter
neen in elk object zit maar 1 genre
zal zeker maar mijn domein model eens herzien zoals hier boven is gezegd :-)

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Verwijderd schreef op maandag 17 januari 2005 @ 17:27:
[...]


ja om dat dvd een genre bevat daarom had ik dat zo gedaan begrijp je en ik wou een object retourneren uit mijn database
Maar waarom heet de method dan niet getDvd bijvoorbeeld?

Noushka's Magnificent Dream | Unity


  • Daos
  • Registratie: Oktober 2004
  • Niet online
Ik ben niet zo goed in SQL. Verder dan "SELECT * FROM table WHERE ..." kom ik niet. Ik haal altijd de hele record op als ik er mee wil werken, zodat je maar 1 keer met je database aan de gang hoeft In principe komt dat record dan in een business klasse, omdat je dan de instanceof en get/set kan gebruiken. Als je maar 1 tabel hebt, dan heb je dat allemaal niet meer zo hard nodig. Ik zou het daarom dus zo doen:
- Als je meerdere tabellen hebt zou ik met business klassen werken.
- Als je 1 tabel hebt dan zou ik een array gebruiken.

[ Voor 45% gewijzigd door Daos op 17-01-2005 17:42 . Reden: extra uitleg ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 16:06
Verwijderd schreef op maandag 17 januari 2005 @ 17:28:
neen in elk object zit maar 1 genre
Maar als je GetGenres() doet, dan lijkt het me toch dat je alle genres wilt terugkrijgen die zich in jouw DB bevinden ?

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 16:06
Daos schreef op maandag 17 januari 2005 @ 17:30:
Ik ben niet zo goed in SQL verder dan "SELECT * FROM table WHERE ..." kom ik niet. Ik zou het daarom zo doen:
- Als je meerdere tabellen hebt zou ik met business klassen werken.
- Als je 1 tabel hebt dan zou ik een array gebruiken.
Eh ? :?

https://fgheysels.github.io/


  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Nog een voordeel om een genre in een apart object te verpakken is het feit dat hij ook gewijzigd kan worden. Ik zou voor iedere DVD gewoon als genre een referentie naar een genre object maken. Zo worden wijzigingen dus overal doorgevoerd, mocht je meerdere dvd's met hetzelfde genre hebben.

Noushka's Magnificent Dream | Unity


Verwijderd

Topicstarter
whoami schreef op maandag 17 januari 2005 @ 17:30:
[...]

Maar als je GetGenres() doet, dan lijkt het me toch dat je alle genres wilt terugkrijgen die zich in jouw DB bevinden ?
klopt

  • Daventry
  • Registratie: Oktober 2004
  • Laatst online: 21-04-2025
Moest je nou all eens beginnen met je ArrayList (in voorbeeld 2) genres te noemen zou het al een stuk duidelijker zijn lijkt me ... of gaat die lijst hele DVD objecten bevatten (lijkt mij alvast niet de bedoeling)

[ Voor 5% gewijzigd door Daventry op 17-01-2005 18:55 ]


Verwijderd

Topicstarter
effe voorbeeld geven van al mijn tabellen

DVD
dvdid
title
genre
year
rating
notes
label
cost

FILMMEDEWERKERS
filmcrewid
name
firstname
dateofbirth
sex
contactadres
functie
nationaliteit

LENER
lenerid
name
firstname
dateofbirth
sex
adress
dateloaned
email
cellullar
phone

LOANED
lenerid
dvdid

WERKTMEEAAN
filmcrewid
dvdid

[ Voor 2% gewijzigd door Verwijderd op 17-01-2005 19:14 . Reden: fout in tabelnaam ]


Verwijderd

Topicstarter
ik heb volgende klassen

Acteur

Dvd

Lener

filmmedewerker

(en misschien dan genres???)

  • Daventry
  • Registratie: Oktober 2004
  • Laatst online: 21-04-2025
Goed, ik begrijp dat het de bedoeling is dat die getGenres alle genres teruggeeft van je database (ja toch?)

Het tweede idee lijkt mij het logiste: je geeft een ArrayList van Strings terug, waarbij elk Stringobject 1 genre voorstelt (waarom in godsnaam hele DVD objecten teruggeven als je de genres wil weten :S ?)

Hernoem dan wel even je arraylist naar genres, anders wordt het verwarrend.

Waar je ook op wil letten is dat voor je een object (genre dus) toevoegd aan die lijst, dat ie er nog niet inzit (kan zijn denk ik dat twee dvd's van je collectie hetzelfde genre hebben)

Verwijderd

Topicstarter
Daventry schreef op maandag 17 januari 2005 @ 18:58:
Goed, ik begrijp dat het de bedoeling is dat die getGenres alle genres teruggeeft van je database (ja toch?)

Het tweede idee lijkt mij het logiste: je geeft een ArrayList van Strings terug, waarbij elk Stringobject 1 genre voorstelt (waarom in godsnaam hele DVD objecten teruggeven als je de genres wil weten :S ?)

Hernoem dan wel even je arraylist naar genres, anders wordt het verwarrend.

Waar je ook op wil letten is dat voor je een object (genre dus) toevoegd aan die lijst, dat ie er nog niet inzit (kan zijn denk ik dat twee dvd's van je collectie hetzelfde genre hebben)
correct en dat los ik op met een distinct query

Verwijderd

Topicstarter
en voor de titels in mijn databank uit te halen mag dat dan met een object van Dvd?

  • whoami
  • Registratie: December 2000
  • Laatst online: 16:06
Verwijderd schreef op maandag 17 januari 2005 @ 18:57:
ik heb volgende klassen

Acteur

Dvd

Lener

filmmedewerker

(en misschien dan genres???)
Waarom een klasse acteur EN een klasse filmmedewerker ? Een acteur is toch ook een film-medewerker ? Ik zie trouwens ook geen acteur tabel in je DB.
En waarom geen class Film ofzo (nuja, da's misschien je 'DVD' class; ik zou er movie van maken, want een film kan ook op video staan bv).

Verder zou ik ook een tabel hebben met de genres.

Classes:
Film
Acteur
Genre
Lener

En voor iedere class kan je dan nog eens een Collection class hebben.

[ Voor 29% gewijzigd door whoami op 17-01-2005 19:50 ]

https://fgheysels.github.io/


Verwijderd

Topicstarter
inderdaad acteur moet er niet bij
nu al ik mijn filmtitels wil downloaden mag dat dan uit dvd.getTitle komen ofzo?

  • Daventry
  • Registratie: Oktober 2004
  • Laatst online: 21-04-2025
Het hangt er maar vanaf wat jij wil natuurlijk ... ik heb eigenlijk nog steeds vrij veel vraagtekens ...

- is het de bedoeling dat je ook 1 bepaalde dvd kan ophalen? (bijvoorbeeld op basis van de titel) ? Dan zou je in je klasse dvd zoiets krijgen van:

public DVD getDVD (String title)


Ik vraag dit omdat wat jij nu doet eigenlijk altijd volledige lijsten ophalen is ... bijvoorbeeld alle titels, alle genres - nu is daar op zich natuurlijk niks mis mee, maar doe je dat dan via static methoden? (bijvoorbeeld die getGendres) ?

Als je dat niet doet, zit je dus op dit moment met de volgende situatie als je alle genres wil ophalen uit je collectie:

Java:
1
2
3
4
public mijnmethode () {
   DVD mijnDVD = new DVD();
   ArrayList deGenres = mijnDVD.getGenres();
}


Nu kan het aan mij liggen, maar dit lijkt me een vrij vreemde manier van werken ... omdat je eigenlijk je DVD object totaal niet gebruikt :S. Het zou misschien helpen moest je even je klasse DVD hier neerpoten (kan zijn dat ik het verkeerd heb)

Of heb ik het nou helemaal verkeerd en komen die getGenres en getTitles niet in je klasse DVD? (in dat geval, mag je deze post vrolijk negeren).

Verwijderd

Topicstarter
die komen wil in mijn klasse dvd voor maar dan allemaal als static methodes ik zal mijn klasse vannavond posten als ik thuis ben thx voor de hulp

Verwijderd

Topicstarter
nu ivm mijn domein model het is inderdaad beter om die genre daar een klasse van te maken

maar ik heb zo geanalyseerd

de zelfstandige naamwoorden uit het probleem domein gehaald dus dvd, filmmedewerker enzo
dan heb ik gekeken per klasse naar de attributen voor dvd dan filmnaam, genre
maar hoe komen jullie nu op het idee om van die genre een klasse te maken
en wat met filmnaam moet dat dan ook een klasse worden
???

thx alot

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Topictitel fixed, zie stickies aub :)

Professionele website nodig?


Verwijderd

Topicstarter
curry684 schreef op dinsdag 18 januari 2005 @ 14:13:
Topictitel fixed, zie stickies aub :)
ok dank u sorry

  • sirono
  • Registratie: November 2002
  • Laatst online: 07-08-2025
voor db ontwerp geld ruwweg dat data die vaker voorkomt niet in 1 tabel mag zitten...

oftewel als je meerdere films hebt met als genre sf
moet je een aparte tabel maken "Genres" met id int identity, en een colom naam, nvarchar(20) ofzo...

kortom uitsplitsen die handel..

hetzelfde geld voor acteurs, enz.

en dan maak je een database class die connectie maakt met de db.
en daar kun je bijv een methode getGenres() inzetten...

gewoon select naam from genres

en daar bouw je een string array van...

  • Stephan Oudmaijer
  • Registratie: Oktober 2000
  • Laatst online: 16-08-2023
Gezien jouw applicatie welke zo direct gekoppeld is aan het data model, is er eigenlijk geen "echt" domein model. Jij hebt eigenlijk alleen DTO`s/ValueObject. Deze kunnen best relaties met elkaar hebben maar het zijn niet "echte" domein objecten, slechts een afspiegeling van data.

Ik zou m`n code zoiets als hieronder bouwen:

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class MyDVDCollectionService
{
  // Returned een lijst met DVD Objecten.
  public List<DVD> getDVDsWithTitle ( String criteria ) {
 
     DVDPersistencyService dvdPersistSrv = new DVDPersistencyService();
     List titles = dvdPersistSrv.getDVDsWithTitle( criteria );
  }

  // Returned een lijst met alle genre`s.
  public List<Genre> getAllGenres () {
 
     DVDPersistencyService dvdPersistSrv = new DVDPersistencyService();
     List genres = dvdPersistSrv.getAllGenres ();
  }

  // Returned een lijst met alle DVD`s behorende bij een bepaald genre.
  public List<DVD> getDVDsInGenre( String genre ) {
 
     DVDPersistencyService dvdPersistSrv = new DVDPersistencyService();
     List genres = dvdPersistSrv.getDVDsInGenre( genre );
  }

  // etc

}


Je webapp roept de MyDVDCollectionService aan, deze roept een of ander persistentie mechanisme aan welke vervolgens een lijst met objecten terug geeft die je in je persentatie laag toont.

webapp -> service -> persistency.

[ Voor 57% gewijzigd door Stephan Oudmaijer op 18-01-2005 15:36 ]


  • sirono
  • Registratie: November 2002
  • Laatst online: 07-08-2025
CK schreef op dinsdag 18 januari 2005 @ 15:29:
Gezien jouw applicatie welke zo direct gekoppeld is aan het data model, is er eigenlijk geen "echt" domein model. Jij hebt eigenlijk alleen DTO`s/ValueObject. Deze kunnen best relaties met elkaar hebben maar het zijn niet "echte" domein objecten, slechts een afspiegeling van data.
daar heb je volgens mij wel vaker last van bij een liberary...

dan heb je vrijwel alleen maar dataobjecten, (wrapperclasses) enz.

Verwijderd

Topicstarter
dus dan zou ik in principe mijn genres in mijn dvd mogen houden dan of toch aparte klasse hiervoor sorry maar snap het niet echt

  • Stephan Oudmaijer
  • Registratie: Oktober 2000
  • Laatst online: 16-08-2023
Verwijderd schreef op dinsdag 18 januari 2005 @ 15:33:
dus dan zou ik in principe mijn genres in mijn dvd mogen houden dan of toch aparte klasse hiervoor sorry maar snap het niet echt
Zoals al eerder gezegd, je krijgt classes als:

DVD
Genre
etc.

Ik heb m`n voorbeeldje van hierboven wat uitgebreid. Misschien wat duidelijker nu?
sirono schreef op dinsdag 18 januari 2005 @ 15:31:
[...]


daar heb je volgens mij wel vaker last van bij een liberary...

dan heb je vrijwel alleen maar dataobjecten, enz.
ook wel ValueObjecten / DTO`s genoemd :)

[ Voor 40% gewijzigd door Stephan Oudmaijer op 18-01-2005 15:37 ]


Verwijderd

Topicstarter
ok thx

Verwijderd

Topicstarter
ik zal hoogstwaarschijnlijk wel een heel domme vraag posten maar hoe zien jullie dat dat genres geen attribuut maar een klasse is
ik heb het zo geleerd

zelfstandige naamwoorden uithalen
en voor elk zelfstandig naamworod de attributen er bij gooien dus dacht ik dvd heeft als attribuut genre

hoe zien jullei dat dan dat dat een klasse is, ik ben overtuigd dat het een klasse is maar ik zoek de manier hoe dit te ontdekken

  • whoami
  • Registratie: December 2000
  • Laatst online: 16:06
Verwijderd schreef op dinsdag 18 januari 2005 @ 15:47:
ik zal hoogstwaarschijnlijk wel een heel domme vraag posten maar hoe zien jullie dat dat genres geen attribuut maar een klasse is
Omdat één genre meerdere keren kan voorkomen, en een genre ook opzichzelf kan bestaan.
Een filmnaam is normaal gezien uniek, en een filmnaam alleen, daar ben je niks mee.

https://fgheysels.github.io/


  • sirono
  • Registratie: November 2002
  • Laatst online: 07-08-2025
een atribuut kan ook een classe zijn ;)

  • whoami
  • Registratie: December 2000
  • Laatst online: 16:06
sirono schreef op dinsdag 18 januari 2005 @ 15:49:
een atribuut kan ook een classe zijn ;)
Eerder: een class (nouja, een object) kan ook een attribuut zijn van een andere class.

https://fgheysels.github.io/


Verwijderd

Topicstarter
het begint stilletjesaan duidelijk te worden nu ik heb het zo geleerd van het mometn dat een attribuut maar 1 waarde in zich heeft een gewone variabele vanaf het moment dat er meerdere zijn een klasse ik zal dat regeltja maar vergeten zeker :-)

allemaal al heel erg bedankt voor de tips

Verwijderd

Topicstarter
nog een kleine vraag - bij die dvd's om gewoon de filmnamen binnen te halen - in een list bvb mag ik dan een volledig dvd object daarvoor maken of die gewoon in een string steken die dan in die list komt want die andere info heb ik dan misschien niet nodig ?

  • Stephan Oudmaijer
  • Registratie: Oktober 2000
  • Laatst online: 16-08-2023
Verwijderd schreef op dinsdag 18 januari 2005 @ 16:19:
nog een kleine vraag - bij die dvd's om gewoon de filmnamen binnen te halen - in een list bvb mag ik dan een volledig dvd object daarvoor maken of die gewoon in een string steken die dan in die list komt want die andere info heb ik dan misschien niet nodig ?
Ik zou gewoon een compleet dvd object returnen. Wat kost geheugen tegenwoordig :)

Gebruik je toevallig Hibernate? Zo nee, zou ik zeker doen :)

  • whoami
  • Registratie: December 2000
  • Laatst online: 16:06
Je kan ook , naast je 'volledige objecten' een 'ReadOnly' class creeëren die enkel informatie bevat die je object toont in een lijst.
Maak dan meteen ook collection classes.

https://fgheysels.github.io/

Pagina: 1