hallo allemaal,
Ik heb een programma geschreven die mijn dvd's bijhoudt en informatie opslaat over de dvd de acteurs, de producers en de directors. Bij het opslaan van de gegevens stoot ik op een probleem in debug mode wordt alles perfect uitgevoerd, in realtime beginnen de problemen.
bij het opslaan van mijn dvd waar alles wordt gekoppeld zoals de producer aan de desbetreffende dvd enzovoort, worden niet alle gegevens opgeslaan, wanneer ik echter nogmaals op mijn knop druk doet hij dit echter wel.
Aan de databank kan het niet liggen denk ik want alles sql statements enzo lopen goed.
Als mijn windows taakbeheer opstaat loopt het cpu verbruik nu ook niet echt bijster hoog.
Het programma javaw.exe verhoogt wel heel vlug in geheugengebruik, maar ik dacht dat garbage collection er toch voorzorgde dat de objects vlug genoeg werden opgekuist.
dit is hier de betreffende code waar het fout loopt
in deze klasse worden nu wel veel databank toegangen gepleegd maar kan me inbeelden dat dit zeker moet kunnen. vooral voor programma's in bedrijven bvb
mijn dallayer bestaat uit 2 grote klassen de datareader en de datawriter
die halen hun info uit repository klassen (RpBorrower, RpFilmCrew, RpContributed, RpDvd, RpGenre, RpLoaned)
deze repositories sturen sql naar de databank
vb ven zo een repository
dit is wle niet de ideale manier, hibernate is hier meer voorgeschikt maar ik wou bij wijze van spreken een oefening maken op de datalayer.
Weet er iemand een tip hoe ik kan zorgen dat alles wordt opgeslaan tijdens runtime en niet enkel in debugmode, pak ik iets fundamenteels fout aan ?
alvast dank
Ik heb een programma geschreven die mijn dvd's bijhoudt en informatie opslaat over de dvd de acteurs, de producers en de directors. Bij het opslaan van de gegevens stoot ik op een probleem in debug mode wordt alles perfect uitgevoerd, in realtime beginnen de problemen.
bij het opslaan van mijn dvd waar alles wordt gekoppeld zoals de producer aan de desbetreffende dvd enzovoort, worden niet alle gegevens opgeslaan, wanneer ik echter nogmaals op mijn knop druk doet hij dit echter wel.
Aan de databank kan het niet liggen denk ik want alles sql statements enzo lopen goed.
Als mijn windows taakbeheer opstaat loopt het cpu verbruik nu ook niet echt bijster hoog.
Het programma javaw.exe verhoogt wel heel vlug in geheugengebruik, maar ik dacht dat garbage collection er toch voorzorgde dat de objects vlug genoeg werden opgekuist.
dit is hier de betreffende code waar het fout loopt
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
| public class SaveDvd { private String title, genre, label, cost, rating, year, director, producer, borrower, myNotes; private String[] actors; public SaveDvd(String title, String genre, String label, String cost, String rating, String year, String[] actors, String director, String producer, String borower, String myNotes){ this.title = title; this.genre = genre; this.label = label; this.cost = cost; this.rating = rating; this.year = year; this.director = director; this.producer = producer; this.borrower = borower; this.myNotes = myNotes; this.actors = actors; } public String save() { String verifiedInput = checkInput(); if(!verifiedInput.equals("Ok")){ return verifiedInput; } else{ saveUpdate(); return "Ok"; } } private String checkInput() { if(title == null || title.trim().equals("")){ return "Enter a name for your Dvd!"; } if(doesGenreExists() == false){ return "Specify your genre name in the genre screen!"; } if(doesDirectorExistsOrIsEmpty() == false){ return "Specify your director name in the director screen!"; } if(doesProducerExistsOrIsEmpty() == false){ return "Specify your producer name in the producer screen!"; } if(doesBorrowerExistsOrIsEmpty() == false){ return "Specify your borrower name in the borrower screen!"; } return "Ok"; } private boolean doesGenreExists() { boolean doesExists = false; Genre genreToSearch = new Genre(); genreToSearch.setGenre(genre); try{ doesExists = DataReader.getGenre(genreToSearch);}catch(Exception e){} genreToSearch = null; return doesExists; } /** * Method to check the input From the Director returns true if the Director exists or is empty * otherwise it returns false * @return doesDirectorExistsOrIsEmpty */ private boolean doesDirectorExistsOrIsEmpty() { if(director == null || director.trim().equals("")){ return true; } else{ String[] directorName = Utilities.parsePersonName(director); FilmCrew director = null; try{ director = DataReader.getFilmCrew(directorName[0], directorName[1], "Director");}catch(Exception e){} if(director == null){ directorName = null; return false; } else{ director = null; directorName = null; return true; } } } /** * Method to check the input From the Producer returns true if the Producer exists or is empty * otherwise it returns false * @return doesProducerExistsOrIsEmpty */ private boolean doesProducerExistsOrIsEmpty() { if(producer == null || producer.trim().equals("")){ return true; } else{ String[] producerName = Utilities.parsePersonName(producer); FilmCrew producer = null; try{ producer = DataReader.getFilmCrew(producerName[0], producerName[1], "Producer");}catch(Exception e){} if(producer == null){ producerName = null; return false; } else{ producer = null; producerName = null; return true; } } } /** * Method to check the input From the Borrower returns true if the Borrower exists or is empty * otherwise it returns false * @return doesBorrowerExistsOrIsEmpty */ private boolean doesBorrowerExistsOrIsEmpty() { if(borrower == null || borrower.trim().equals("")){ return true; } else{ String[] borrowerName = Utilities.parsePersonName(borrower); Borrower borrower = null; try{ borrower = DataReader.getBorrower(borrowerName[0], borrowerName[1]);}catch(Exception e){} if(borrower == null){ borrowerName = null; return false; } else{ borrower = null; borrowerName = null; return true; } } } private void saveUpdate() { Dvd dvd = saveOrUpdateDvd(); saveDirectorToDvd(dvd); saveActorsToDvd(dvd); saveProducerToDvd(dvd); saveBorrowerToDvd(dvd); dvd = null; } private Dvd saveOrUpdateDvd() { Genre genreDvd = fetchGenre(); Dvd dvd = new Dvd(title, genreDvd, myNotes, label, cost, rating, year); boolean dvdExists = dvdExists(dvd); if(dvdExists == false){ try{DataWriter.saveDvd(dvd);}catch(Exception e){} } else{ try{DataWriter.updateDvd(dvd);}catch(Exception e){} } Dvd upToDateDvd = null; try{upToDateDvd = DataReader.getDvd(dvd.getTitle());}catch(Exception e){} dvd = null; return upToDateDvd; } private Genre fetchGenre() { Genre genreToReturn = null; Genre genreToSearch = new Genre(); genreToSearch.setGenre(genre); try{ genreToReturn = DataReader.getGenre(genreToSearch.getGenre());}catch(Exception e){} genreToSearch = null; return genreToReturn; } private boolean dvdExists(Dvd dvd) { boolean dvdExists = false; Dvd oldDvd = null; try{oldDvd = DataReader.getDvd(dvd.getTitle());}catch(Exception e){} if(oldDvd != null){ dvdExists = true; oldDvd = null; } dvd = null; return dvdExists; } private void saveBorrowerToDvd(Dvd dvd) { if(borrower == null || borrower.trim().equals("")){ Borrower borrower = null; Borrowed borrowed = null; try{borrower = DataReader.getBorrower(dvd.getTitle());}catch(Exception e){} try{borrowed = DataReader.getBorrowed(borrower, dvd);}catch(Exception e){} if(borrowed != null){ try{DataWriter.deleteBorrowed(dvd);}catch(Exception e){} } } else{ Borrower borrower = null; Borrowed borrowed = null; try{borrower = DataReader.getBorrower(dvd.getTitle());}catch(Exception e){} try{borrowed = DataReader.getBorrowed(borrower, dvd);}catch(Exception e){} try{DataWriter.saveBorrowed(borrowed);}catch(Exception e){} } dvd = null; } private void saveProducerToDvd(Dvd dvd) { if(producer == null || producer.trim().equals("")){ FilmCrew producer = null; try{producer = DataReader.getContributor(dvd.getTitle(), "Producer");}catch(Exception e){} if(producer != null){ try{DataWriter.deleteContributed(producer, dvd);}catch(Exception e){} } } else{ FilmCrew producer = null; String[] producerToSearch = Utilities.parsePersonName(this.producer); try{producer = DataReader.getFilmCrew(producerToSearch[0], producerToSearch[1], "Producer");}catch(Exception e){} try{DataWriter.saveContributed(dvd, producer);}catch(Exception e){} } dvd = null; } private void saveActorsToDvd(Dvd dvd) { ArrayList<FilmCrew> crewActors = null; try{ crewActors = DataReader.getContributors(dvd.getTitle(), "Actor"); }catch(Exception e){} if(crewActors != null){ for(FilmCrew savedActor : crewActors){ boolean mustUpdate = true; for(int i=0; i<actors.length; i++){ String[] actor = Utilities.parsePersonName(actors[i]); if(savedActor.getFirstName().equals(actor[0]) && savedActor.getName().equals(actor[1])){ mustUpdate = false; } } if(mustUpdate == true){ try{ DataWriter.deleteContributed(savedActor, dvd);}catch(Exception e){} } } } else{ crewActors = null; } } private void saveDirectorToDvd(Dvd dvd) { if(director == null || director.trim().equals("")){ FilmCrew director = null; try{director = DataReader.getContributor(dvd.getTitle(), "Director");}catch(Exception e){} if(director != null){ try{DataWriter.deleteContributed(director, dvd);}catch(Exception e){} } } else{ FilmCrew director = null; String[] directorToSearch = Utilities.parsePersonName(this.director); try{director = DataReader.getFilmCrew(directorToSearch[0], directorToSearch[1], "Director");}catch(Exception e){} try{DataWriter.saveContributed(dvd, director);}catch(Exception e){} } dvd = null; } } |
in deze klasse worden nu wel veel databank toegangen gepleegd maar kan me inbeelden dat dit zeker moet kunnen. vooral voor programma's in bedrijven bvb
mijn dallayer bestaat uit 2 grote klassen de datareader en de datawriter
die halen hun info uit repository klassen (RpBorrower, RpFilmCrew, RpContributed, RpDvd, RpGenre, RpLoaned)
deze repositories sturen sql naar de databank
vb ven zo een repository
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
27
| public class RPGenre { private DatabaseAcces dba; public RPGenre() throws Exception{ dba = DatabaseAcces.getInstance(); } public void addGenre(String genre) throws Exception{ String sql = "INSERT INTO Genre (genre) VALUES ('" + genre + "')"; dba.executeQuery(sql); } public Result getGenre(String genre) throws Exception{ String sql = "SELECT * FROM Genre WHERE genre = '" + genre + "'"; return dba.executeQuery(sql); } public Result getGenre(int genreId) throws Exception{ String sql = "SELECT * FROM Genre WHERE genreId = " + genreId + ""; return dba.executeQuery(sql); } public Result getGenres() throws Exception{ String sql = "SELECT * FROM Genre"; return dba.executeQuery(sql); } } |
dit is wle niet de ideale manier, hibernate is hier meer voorgeschikt maar ik wou bij wijze van spreken een oefening maken op de datalayer.
Weet er iemand een tip hoe ik kan zorgen dat alles wordt opgeslaan tijdens runtime en niet enkel in debugmode, pak ik iets fundamenteels fout aan ?
alvast dank