1
2
3
4
5
6
7 package org.huihoo.jfox.soaf.services.persistence;
8
9 import java.sql.Connection;
10 import java.sql.PreparedStatement;
11 import java.sql.ResultSet;
12 import java.sql.Statement;
13 import java.util.Collection;
14 import java.util.List;
15
16 import javax.sql.DataSource;
17
18 import org.huihoo.jfox.soaf.exception.DAOException;
19
20 import com.jenkov.mrpersister.itf.IReadFilter;
21 import com.jenkov.mrpersister.itf.PersistenceException;
22
23 /***
24 * @author peter.cheng
25 *
26 * TODO To change the template for this generated type comment go to Window -
27 * Preferences - Java - Code Style - Code Templates
28 */
29 public interface MrPersisterService {
30
31 /***
32 * Set DataSource
33 * @param dataSource
34 */
35 public void setDataSource(DataSource dataSource);
36
37 /***
38 * Reads a single object from the database using the object mapping stored
39 * by the given object mapping key, and the given primary key to identify
40 * the record in the database that coresponds to the object to be read. If
41 * no record/object was found by the given primary key, null is returned.
42 *
43 * <br/><br/>A connection to the database will be obtained from the
44 * getConnection() method of this instance.
45 *
46 * <br/><br/>If no object mapping is stored by the given object mapping
47 * key, a new object mapping will be attempted generated and stored by that
48 * object mapping key. An object mapping can only be generated automatically
49 * if the method key is either a</code> Class</code> instance, or a <code>
50 * com.jenkov.mrpersister.impl.ObjectMappingKey</code> instance with a
51 * <code>Class</code> instance set (calling ObjectMappingKey's
52 * setObjectClass(Class theClass) method).
53 *
54 * <br/><br/>The <code>Class</code> instance should be the class of the
55 * object to be read, meaning if you want to read an object of class <code>
56 * Employee</code> the <code>Class</code> instance should be that found
57 * at <code>Employee.class</code>.
58 *
59 * @param objectMappingKey
60 * The object mapping key by which the object mapping to be used
61 * is stored in the object mapping cache, in the persistence
62 * configuration used by this instance of the DAO class.
63 * @param primaryKey
64 * The primary key value identifying the record to be read into
65 * an object.
66 * @return The object coresponding to the given primary key, read according
67 * to the given object mapping. If no record/object was found by the
68 * given primary key, null is returned.
69 * @throws PersistenceException
70 * If anything goes wrong during the read, if no persistence
71 * configuration is set, if the persistence configuration
72 * contains no object reader, or if no object mapping could be
73 * found nor generated from the given object mapping key.
74 * @throws DAOException
75 */
76 public Object readByPrimaryKey(Object objectMappingKey, Object primaryKey)
77 throws PersistenceException, DAOException;
78
79 /***
80 * Reads a single object from the database using the object mapping stored
81 * by the given object mapping key, and the given primary key to identify
82 * the record in the database that coresponds to the object to be read. If
83 * no record/object was found by the given primary key, null is returned.
84 *
85 * <br/><br/>A connection to the database will be obtained from the
86 * getConnection() method of this instance.
87 *
88 * <br/><br/>If no object mapping is stored by the given object mapping
89 * key, a new object mapping will be attempted generated and stored by that
90 * object mapping key. An object mapping can only be generated automatically
91 * if the method key is either a</code> Class</code> instance, or a <code>
92 * com.jenkov.mrpersister.impl.ObjectMappingKey</code> instance with a
93 * <code>Class</code> instance set (calling ObjectMappingKey's
94 * setObjectClass(Class theClass) method).
95 *
96 * <br/><br/>The <code>Class</code> instance should be the class of the
97 * object to be read, meaning if you want to read an object of class <code>
98 * Employee</code> the <code>Class</code> instance should be that found
99 * at <code>Employee.class</code>.
100 *
101 * @param conn
102 * JDBC Connection.
103 * @param objectMappingKey
104 * The object mapping key by which the object mapping to be used
105 * is stored in the object mapping cache, in the persistence
106 * configuration used by this instance of the DAO class.
107 * @param primaryKey
108 * The primary key value identifying the record to be read into
109 * an object.
110 * @return The object coresponding to the given primary key, read according
111 * to the given object mapping. If no record/object was found by the
112 * given primary key, null is returned.
113 * @throws PersistenceException
114 * If anything goes wrong during the read, if no persistence
115 * configuration is set, if the persistence configuration
116 * contains no object reader, or if no object mapping could be
117 * found nor generated from the given object mapping key.
118 * @throws DAOException
119 */
120 public Object readByPrimaryKey(Connection conn, Object objectMappingKey,
121 Object primaryKey) throws PersistenceException, DAOException;
122
123 /***
124 * Reads a single object from the database using the object mapping stored
125 * by the given object mapping key, and the given SQL string. If the SQL
126 * string results in more than one record in the <code>ResultSet</code>
127 * generated by it, only the first record in the <code>ResultSet</code>
128 * will be read into an object and returned.
129 *
130 * <br/><br/>A connection to the database will be obtained from the
131 * getConnection() method of this instance.
132 *
133 * <br/><br/>If no object mapping is stored by the given object mapping
134 * key, a new object mapping will be attempted generated and stored by that
135 * object mapping key. An object mapping can only be generated automatically
136 * if the method key is either a</code> Class</code> instance, or a <code>
137 * com.jenkov.mrpersister.impl.ObjectMappingKey</code> instance with a
138 * <code>Class</code> instance set (calling ObjectMappingKey's
139 * setObjectClass(Class theClass) method).
140 *
141 * <br/><br/>The <code>Class</code> instance should be the class of the
142 * object to be read, meaning if you want to read an object of class <code>
143 * Employee</code> the <code>Class</code> instance should be that found
144 * at <code>Employee.class</code>.
145 *
146 * @param objectMappingKey
147 * The object mapping key by which the object mapping to be used
148 * is stored in the object mapping cache, in the persistence
149 * configuration used by this instance of the DAO class.
150 * @param sql
151 * The SQL string locating the record to be read into an object.
152 * @return The object read using the given SQL string and object mapping
153 * stored by the given object mapping key.
154 * @throws PersistenceException
155 * If anything goes wrong during the read, if no persistence
156 * configuration is set, if the persistence configuration
157 * contains no object reader, or if no object mapping could be
158 * found nor generated from the given object mapping key.
159 * @throws DAOException
160 */
161 public Object read(Object objectMappingKey, String sql)
162 throws PersistenceException, DAOException;
163
164 /***
165 * Reads a single object from the database using the object mapping stored
166 * by the given object mapping key, and the given SQL string. If the SQL
167 * string results in more than one record in the <code>ResultSet</code>
168 * generated by it, only the first record in the <code>ResultSet</code>
169 * will be read into an object and returned.
170 *
171 * <br/><br/>A connection to the database will be obtained from the
172 * getConnection() method of this instance.
173 *
174 * <br/><br/>If no object mapping is stored by the given object mapping
175 * key, a new object mapping will be attempted generated and stored by that
176 * object mapping key. An object mapping can only be generated automatically
177 * if the method key is either a</code> Class</code> instance, or a <code>
178 * com.jenkov.mrpersister.impl.ObjectMappingKey</code> instance with a
179 * <code>Class</code> instance set (calling ObjectMappingKey's
180 * setObjectClass(Class theClass) method).
181 *
182 * <br/><br/>The <code>Class</code> instance should be the class of the
183 * object to be read, meaning if you want to read an object of class <code>
184 * Employee</code> the <code>Class</code> instance should be that found
185 * at <code>Employee.class</code>.
186 *
187 * @param conn
188 * JDBC Connection.
189 * @param objectMappingKey
190 * The object mapping key by which the object mapping to be used
191 * is stored in the object mapping cache, in the persistence
192 * configuration used by this instance of the DAO class.
193 * @param sql
194 * The SQL string locating the record to be read into an object.
195 * @return The object read using the given SQL string and object mapping
196 * stored by the given object mapping key.
197 * @throws PersistenceException
198 * If anything goes wrong during the read, if no persistence
199 * configuration is set, if the persistence configuration
200 * contains no object reader, or if no object mapping could be
201 * found nor generated from the given object mapping key.
202 * @throws DAOException
203 */
204 public Object read(Connection conn, Object objectMappingKey, String sql)
205 throws PersistenceException, DAOException;
206
207 /***
208 * Reads a single object from the given <code>ResultSet</code> using the
209 * object mapping stored by the given object mapping key. If the
210 * <code>ResultSet</code> contains more than one record, only the first
211 * record in the <code>ResultSet</code> will be read into an object and
212 * returned.
213 *
214 * <br/><br/>No database connection will be opened. The object will be read
215 * from the provided <code>ResultSet</code>. You must remember to close
216 * the <code>ResultSet</code> yourself when you are done with it.
217 *
218 * <br/><br/>If no object mapping is stored by the given object mapping
219 * key, a new object mapping will be attempted generated and stored by that
220 * object mapping key. An object mapping can only be generated automatically
221 * if the method key is either a</code> Class</code> instance, or a <code>
222 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
223 * a <code>Class</code> instance set (calling ObjectMappingKey's
224 * setObjectClass(Class theClass) method).
225 *
226 * <br/><br/>The <code>Class</code> instance should be the class of the
227 * object to be read, meaning if you want to read an object of class <code>
228 * Employee</code> the <code>Class</code> instance should be that found
229 * at <code>Employee.class</code>.
230 *
231 * @param objectMappingKey
232 * The object mapping key by which the object mapping to be used
233 * is stored in the object mapping cache, in the persistence
234 * configuration used by this instance of the DAO class.
235 * @param result
236 * The <code>ResultSet</code> to read the object from.
237 * @return The object read from the <code>ResultSet</code> using the
238 * object mapping stored by the given object mapping key.
239 * @throws PersistenceException
240 * If anything goes wrong during the read, if no persistence
241 * configuration is set, if the persistence configuration
242 * contains no object reader, or if no object mapping could be
243 * found nor generated from the given object mapping key.
244 * @throws DAOException.
245 */
246 public Object read(Object objectMappingKey, ResultSet result)
247 throws PersistenceException, DAOException;
248
249 /***
250 * Reads a single object from the given <code>ResultSet</code> using the
251 * object mapping stored by the given object mapping key. If the
252 * <code>ResultSet</code> contains more than one record, only the first
253 * record in the <code>ResultSet</code> will be read into an object and
254 * returned.
255 *
256 * <br/><br/>No database connection will be opened. The object will be read
257 * from the provided <code>ResultSet</code>. You must remember to close
258 * the <code>ResultSet</code> yourself when you are done with it.
259 *
260 * <br/><br/>If no object mapping is stored by the given object mapping
261 * key, a new object mapping will be attempted generated and stored by that
262 * object mapping key. An object mapping can only be generated automatically
263 * if the method key is either a</code> Class</code> instance, or a <code>
264 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
265 * a <code>Class</code> instance set (calling ObjectMappingKey's
266 * setObjectClass(Class theClass) method).
267 *
268 * <br/><br/>The <code>Class</code> instance should be the class of the
269 * object to be read, meaning if you want to read an object of class <code>
270 * Employee</code> the <code>Class</code> instance should be that found
271 * at <code>Employee.class</code>.
272 *
273 * @param conn
274 * JDBC Connection.
275 * @param objectMappingKey
276 * The object mapping key by which the object mapping to be used
277 * is stored in the object mapping cache, in the persistence
278 * configuration used by this instance of the DAO class.
279 * @param result
280 * The <code>ResultSet</code> to read the object from.
281 * @return The object read from the <code>ResultSet</code> using the
282 * object mapping stored by the given object mapping key.
283 * @throws PersistenceException
284 * If anything goes wrong during the read, if no persistence
285 * configuration is set, if the persistence configuration
286 * contains no object reader, or if no object mapping could be
287 * found nor generated from the given object mapping key.
288 * @throws DAOException.
289 */
290 public Object read(Connection conn, Object objectMappingKey,
291 ResultSet result) throws PersistenceException, DAOException;
292
293 /***
294 * Reads a single object from the database using the given
295 * <code>Statement</code> instance, the given SQL string, and the object
296 * mapping stored by the given object mapping key. If the
297 * <code>ResultSet</code> generated by the <code>Statement</code>
298 * instance when executing the SQL string contains more than one record,
299 * only the first record in the <code>ResultSet</code> will be read into
300 * an object and returned.
301 *
302 * <br/><br/>Use this method if you need to use a special/customized
303 * <code>Statement</code> instance. If you don't need a special/customized
304 * <code>Statement</code> instance, the other <code>read</code> methods
305 * will be easier to use.
306 *
307 * <br/><br/>No database connection will be opened. The object will be read
308 * using the provided <code>Statement</code> instance. You must remember
309 * to close the <code>Statement</code> yourself when you are done with it.
310 *
311 *
312 * <br/><br/>If no object mapping is stored by the given object mapping
313 * key, a new object mapping will be attempted generated and stored by that
314 * object mapping key. An object mapping can only be generated automatically
315 * if the method key is either a</code> Class</code> instance, or a <code>
316 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
317 * a <code>Class</code> instance set (calling ObjectMappingKey's
318 * setObjectClass(Class theClass) method).
319 *
320 * <br/><br/>The <code>Class</code> instance should be the class of the
321 * object to be read, meaning if you want to read an object of class <code>
322 * Employee</code> the <code>Class</code> instance should be that found
323 * at <code>Employee.class</code>.
324 *
325 * @param objectMappingKey
326 * The object mapping key by which the object mapping to be used
327 * is stored in the object mapping cache, in the persistence
328 * configuration used by this instance of the DAO class.
329 * @param statement
330 * The <code>Statement</code> instance to use to execute the
331 * SQL string.
332 * @param sql
333 * The SQL string to be executed by the <code>Statement</code>
334 * instance.
335 * @return
336 * @throws PersistenceException
337 * If anything goes wrong during the read, if no persistence
338 * configuration is set, if the persistence configuration
339 * contains no object reader, or if no object mapping could be
340 * found nor generated from the given object mapping key.
341 * @throws DAOException.
342 */
343 public Object read(Object objectMappingKey, Statement statement, String sql)
344 throws PersistenceException, DAOException;
345
346 /***
347 * Reads a single object from the database using the given
348 * <code>Statement</code> instance, the given SQL string, and the object
349 * mapping stored by the given object mapping key. If the
350 * <code>ResultSet</code> generated by the <code>Statement</code>
351 * instance when executing the SQL string contains more than one record,
352 * only the first record in the <code>ResultSet</code> will be read into
353 * an object and returned.
354 *
355 * <br/><br/>Use this method if you need to use a special/customized
356 * <code>Statement</code> instance. If you don't need a special/customized
357 * <code>Statement</code> instance, the other <code>read</code> methods
358 * will be easier to use.
359 *
360 * <br/><br/>No database connection will be opened. The object will be read
361 * using the provided <code>Statement</code> instance. You must remember
362 * to close the <code>Statement</code> yourself when you are done with it.
363 *
364 *
365 * <br/><br/>If no object mapping is stored by the given object mapping
366 * key, a new object mapping will be attempted generated and stored by that
367 * object mapping key. An object mapping can only be generated automatically
368 * if the method key is either a</code> Class</code> instance, or a <code>
369 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
370 * a <code>Class</code> instance set (calling ObjectMappingKey's
371 * setObjectClass(Class theClass) method).
372 *
373 * <br/><br/>The <code>Class</code> instance should be the class of the
374 * object to be read, meaning if you want to read an object of class <code>
375 * Employee</code> the <code>Class</code> instance should be that found
376 * at <code>Employee.class</code>.
377 *
378 * @param conn
379 * JDBC Connection.
380 * @param objectMappingKey
381 * The object mapping key by which the object mapping to be used
382 * is stored in the object mapping cache, in the persistence
383 * configuration used by this instance of the DAO class.
384 * @param statement
385 * The <code>Statement</code> instance to use to execute the
386 * SQL string.
387 * @param sql
388 * The SQL string to be executed by the <code>Statement</code>
389 * instance.
390 * @return
391 * @throws PersistenceException
392 * If anything goes wrong during the read, if no persistence
393 * configuration is set, if the persistence configuration
394 * contains no object reader, or if no object mapping could be
395 * found nor generated from the given object mapping key.
396 * @throws DAOException.
397 */
398 public Object read(Connection conn, Object objectMappingKey,
399 Statement statement, String sql) throws PersistenceException,
400 DAOException;
401
402 /***
403 * Reads a single object from the database using the given
404 * <code>PreparedStatement</code> instance, and the object mapping stored
405 * by the given object mapping key. The <code>PreparedStatement</code>
406 * instance must have all parameters set before calling this method (using
407 * the PreparedStatement.setXXX(index, value) methods). If the
408 * <code>ResultSet</code> generated by the <code>PreparedStatement</code>
409 * instance contains more than one record, only the first record in the
410 * <code>ResultSet</code> will be read into an object and returned.
411 *
412 * <br/><br/>No database connection will be opened. The object will be read
413 * using the <code>PreparedStatement</code> passed as parameter. You must
414 * remember to close the <code>PreparedStatement</code> yourself when you
415 * are done with it.
416 *
417 * <br/><br/>If no object mapping is stored by the given object mapping
418 * key, a new object mapping will be attempted generated and stored by that
419 * object mapping key. An object mapping can only be generated automatically
420 * if the method key is either a</code> Class</code> instance, or a <code>
421 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
422 * a <code>Class</code> instance set (calling ObjectMappingKey's
423 * setObjectClass(Class theClass) method).
424 *
425 * <br/><br/>The <code>Class</code> instance should be the class of the
426 * object to be read, meaning if you want to read an object of class <code>
427 * Employee</code> the <code>Class</code> instance should be that found
428 * at <code>Employee.class</code>.
429 *
430 * @param objectMappingKey
431 * The object mapping key by which the object mapping to be used
432 * is stored in the object mapping cache, in the persistence
433 * configuration used by this instance of the DAO class.
434 * @param statement
435 * The <code>PreparedStatement</code> instance locating the
436 * object to read.
437 * @return The object read from the <code>ResultSet</code> generated by
438 * the given <code>PreparedStatement</code>, according to the
439 * object mapping located or generated by the given object mapping
440 * key.
441 * @throws PersistenceException
442 * If anything goes wrong during the read, if no persistence
443 * configuration is set, if the persistence configuration
444 * contains no object reader, or if no object mapping could be
445 * found nor generated from the given object mapping key.
446 * @throws DAOException
447 */
448 public Object read(Object objectMappingKey, PreparedStatement statement)
449 throws PersistenceException, DAOException;
450
451 /***
452 * Reads a single object from the database using the given
453 * <code>PreparedStatement</code> instance, and the object mapping stored
454 * by the given object mapping key. The <code>PreparedStatement</code>
455 * instance must have all parameters set before calling this method (using
456 * the PreparedStatement.setXXX(index, value) methods). If the
457 * <code>ResultSet</code> generated by the <code>PreparedStatement</code>
458 * instance contains more than one record, only the first record in the
459 * <code>ResultSet</code> will be read into an object and returned.
460 *
461 * <br/><br/>No database connection will be opened. The object will be read
462 * using the <code>PreparedStatement</code> passed as parameter. You must
463 * remember to close the <code>PreparedStatement</code> yourself when you
464 * are done with it.
465 *
466 * <br/><br/>If no object mapping is stored by the given object mapping
467 * key, a new object mapping will be attempted generated and stored by that
468 * object mapping key. An object mapping can only be generated automatically
469 * if the method key is either a</code> Class</code> instance, or a <code>
470 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
471 * a <code>Class</code> instance set (calling ObjectMappingKey's
472 * setObjectClass(Class theClass) method).
473 *
474 * <br/><br/>The <code>Class</code> instance should be the class of the
475 * object to be read, meaning if you want to read an object of class <code>
476 * Employee</code> the <code>Class</code> instance should be that found
477 * at <code>Employee.class</code>.
478 *
479 * @param conn
480 * JDBC Connection.
481 * @param objectMappingKey
482 * The object mapping key by which the object mapping to be used
483 * is stored in the object mapping cache, in the persistence
484 * configuration used by this instance of the DAO class.
485 * @param statement
486 * The <code>PreparedStatement</code> instance locating the
487 * object to read.
488 * @return The object read from the <code>ResultSet</code> generated by
489 * the given <code>PreparedStatement</code>, according to the
490 * object mapping located or generated by the given object mapping
491 * key.
492 * @throws PersistenceException
493 * If anything goes wrong during the read, if no persistence
494 * configuration is set, if the persistence configuration
495 * contains no object reader, or if no object mapping could be
496 * found nor generated from the given object mapping key.
497 */
498 public Object read(Connection conn, Object objectMappingKey,
499 PreparedStatement statement) throws PersistenceException,
500 DAOException;
501
502 /***
503 * Reads a single object from the database using the given SQL string, the
504 * parameters, and the object mapping stored by the given object mapping
505 * key.
506 *
507 * <br/><br/>A <code>PreparedStatement</code> instance will be created
508 * using the given SQL string, and the parameters collection will be
509 * inserted into it. Therefore the SQL string should have the same format as
510 * those used with a <code>PreparedStatement</code>. The parameters will
511 * be inserted in the sequence returned by the parameter collection's
512 * iterator.
513 *
514 * <br/><br/>If the <code>ResultSet</code> generated by the
515 * <code>PreparedStatement</code> instance contains more than one record,
516 * only the first record in the <code>ResultSet</code> will be read into
517 * an object and returned.
518 *
519 * <br/><br/>A connection to the database will be obtained from the
520 * getConnection() method of this instance.
521 *
522 * <br/><br/>If no object mapping is stored by the given object mapping
523 * key, a new object mapping will be attempted generated and stored by that
524 * object mapping key. An object mapping can only be generated automatically
525 * if the method key is either a</code> Class</code> instance, or a <code>
526 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
527 * a <code>Class</code> instance set (calling ObjectMappingKey's
528 * setObjectClass(Class theClass) method).
529 *
530 * <br/><br/>The <code>Class</code> instance should be the class of the
531 * object to be read, meaning if you want to read an object of class <code>
532 * Employee</code> the <code>Class</code> instance should be that found
533 * at <code>Employee.class</code>.
534 *
535 * @param objectMappingKey
536 * The object mapping key by which the object mapping to be used
537 * is stored in the object mapping cache, in the persistence
538 * configuration used by this instance of the DAO class.
539 * @return The object read from the <code>ResultSet</code> generated by
540 * the given <code>PreparedStatement</code>, according to the
541 * object mapping located or generated by the given object mapping
542 * key.
543 * @throws PersistenceException
544 * If anything goes wrong during the read, if no persistence
545 * configuration is set, if the persistence configuration
546 * contains no object reader, or if no object mapping could be
547 * found nor generated from the given object mapping key.
548 * @throws DAOException
549 */
550 public Object read(Object objectMappingKey, String sql,
551 Collection parameters) throws PersistenceException, DAOException;
552
553 /***
554 * Reads a single object from the database using the given SQL string, the
555 * parameters, and the object mapping stored by the given object mapping
556 * key.
557 *
558 * <br/><br/>A <code>PreparedStatement</code> instance will be created
559 * using the given SQL string, and the parameters collection will be
560 * inserted into it. Therefore the SQL string should have the same format as
561 * those used with a <code>PreparedStatement</code>. The parameters will
562 * be inserted in the sequence returned by the parameter collection's
563 * iterator.
564 *
565 * <br/><br/>If the <code>ResultSet</code> generated by the
566 * <code>PreparedStatement</code> instance contains more than one record,
567 * only the first record in the <code>ResultSet</code> will be read into
568 * an object and returned.
569 *
570 * <br/><br/>A connection to the database will be obtained from the
571 * getConnection() method of this instance.
572 *
573 * <br/><br/>If no object mapping is stored by the given object mapping
574 * key, a new object mapping will be attempted generated and stored by that
575 * object mapping key. An object mapping can only be generated automatically
576 * if the method key is either a</code> Class</code> instance, or a <code>
577 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
578 * a <code>Class</code> instance set (calling ObjectMappingKey's
579 * setObjectClass(Class theClass) method).
580 *
581 * <br/><br/>The <code>Class</code> instance should be the class of the
582 * object to be read, meaning if you want to read an object of class <code>
583 * Employee</code> the <code>Class</code> instance should be that found
584 * at <code>Employee.class</code>.
585 *
586 * @param objectMappingKey
587 * The object mapping key by which the object mapping to be used
588 * is stored in the object mapping cache, in the persistence
589 * configuration used by this instance of the DAO class.
590 * @return The object read from the <code>ResultSet</code> generated by
591 * the given <code>PreparedStatement</code>, according to the
592 * object mapping located or generated by the given object mapping
593 * key.
594 * @throws PersistenceException
595 * If anything goes wrong during the read, if no persistence
596 * configuration is set, if the persistence configuration
597 * contains no object reader, or if no object mapping could be
598 * found nor generated from the given object mapping key.
599 * @throws DAOException
600 */
601 public Object read(Connection conn, Object objectMappingKey, String sql,
602 Collection parameters) throws PersistenceException, DAOException;
603
604 /***
605 * Reads a single object from the database using the given SQL string, the
606 * parameters, and the object mapping stored by the given object mapping
607 * key.
608 *
609 * <br/><br/>A <code>PreparedStatement</code> instance will be created
610 * using the given SQL string, and the parameters collection will be
611 * inserted into it. Therefore the SQL string should have the same format as
612 * those used with a <code>PreparedStatement</code>. The parameters will
613 * be inserted in the sequence returned by the parameter collection's
614 * iterator.
615 *
616 * <br/><br/>If the <code>ResultSet</code> generated by the
617 * <code>PreparedStatement</code> instance contains more than one record,
618 * only the first record in the <code>ResultSet</code> will be read into
619 * an object and returned.
620 *
621 * <br/><br/>A connection to the database will be obtained from the
622 * getConnection() method of this instance.
623 *
624 * <br/><br/>If no object mapping is stored by the given object mapping
625 * key, a new object mapping will be attempted generated and stored by that
626 * object mapping key. An object mapping can only be generated automatically
627 * if the method key is either a</code> Class</code> instance, or a <code>
628 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
629 * a <code>Class</code> instance set (calling ObjectMappingKey's
630 * setObjectClass(Class theClass) method).
631 *
632 * <br/><br/>The <code>Class</code> instance should be the class of the
633 * object to be read, meaning if you want to read an object of class <code>
634 * Employee</code> the <code>Class</code> instance should be that found
635 * at <code>Employee.class</code>.
636 *
637 * @param objectMappingKey
638 * The object mapping key by which the object mapping to be used
639 * is stored in the object mapping cache, in the persistence
640 * configuration used by this instance of the DAO class.
641 * @return The object read from the <code>ResultSet</code> generated by
642 * the given <code>PreparedStatement</code>, according to the
643 * object mapping located or generated by the given object mapping
644 * key.
645 * @throws PersistenceException
646 * If anything goes wrong during the read, if no persistence
647 * configuration is set, if the persistence configuration
648 * contains no object reader, or if no object mapping could be
649 * found nor generated from the given object mapping key.
650 * @throws DAOException
651 */
652 public Object read(Object objectMappingKey, String sql, Object[] parameters)
653 throws PersistenceException, DAOException;
654
655 /***
656 * Reads a single object from the database using the given SQL string, the
657 * parameters, and the object mapping stored by the given object mapping
658 * key.
659 *
660 * <br/><br/>A <code>PreparedStatement</code> instance will be created
661 * using the given SQL string, and the parameters collection will be
662 * inserted into it. Therefore the SQL string should have the same format as
663 * those used with a <code>PreparedStatement</code>. The parameters will
664 * be inserted in the sequence returned by the parameter collection's
665 * iterator.
666 *
667 * <br/><br/>If the <code>ResultSet</code> generated by the
668 * <code>PreparedStatement</code> instance contains more than one record,
669 * only the first record in the <code>ResultSet</code> will be read into
670 * an object and returned.
671 *
672 * <br/><br/>A connection to the database will be obtained from the
673 * getConnection() method of this instance.
674 *
675 * <br/><br/>If no object mapping is stored by the given object mapping
676 * key, a new object mapping will be attempted generated and stored by that
677 * object mapping key. An object mapping can only be generated automatically
678 * if the method key is either a</code> Class</code> instance, or a <code>
679 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
680 * a <code>Class</code> instance set (calling ObjectMappingKey's
681 * setObjectClass(Class theClass) method).
682 *
683 * <br/><br/>The <code>Class</code> instance should be the class of the
684 * object to be read, meaning if you want to read an object of class <code>
685 * Employee</code> the <code>Class</code> instance should be that found
686 * at <code>Employee.class</code>.
687 *
688 * @param conn
689 * JDBC Connection.
690 * @param objectMappingKey
691 * The object mapping key by which the object mapping to be used
692 * is stored in the object mapping cache, in the persistence
693 * configuration used by this instance of the DAO class.
694 * @return The object read from the <code>ResultSet</code> generated by
695 * the given <code>PreparedStatement</code>, according to the
696 * object mapping located or generated by the given object mapping
697 * key.
698 * @throws PersistenceException
699 * If anything goes wrong during the read, if no persistence
700 * configuration is set, if the persistence configuration
701 * contains no object reader, or if no object mapping could be
702 * found nor generated from the given object mapping key.
703 * @throws DAOException
704 */
705 public Object read(Connection conn, Object objectMappingKey, String sql,
706 Object[] parameters) throws PersistenceException, DAOException;
707
708 /***
709 * Reads a list of objects from the database using the object mapping stored
710 * by the given object mapping key, and the given primary keys to identify
711 * the records in the database that coresponds to the objects to be read. If
712 * no records/objects were found by the given primary keys, an empty list is
713 * returned. An empty list is also returned if the collection of primary
714 * keys passed to this method is empty.
715 *
716 * <br/><br/>A connection to the database will be obtained from the
717 * getConnection() method of this instance.
718 *
719 * <br/><br/>If no object mapping is stored by the given object mapping
720 * key, a new object mapping will be attempted generated and stored by that
721 * object mapping key. An object mapping can only be generated automatically
722 * if the method key is either a</code> Class</code> instance, or a <code>
723 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
724 * a <code>Class</code> instance set (calling ObjectMappingKey's
725 * setObjectClass(Class theClass) method).
726 *
727 * <br/><br/>The <code>Class</code> instance should be the class of the
728 * objects to be read, meaning if you want to read objects of class <code>
729 * Employee</code> the <code>Class</code> instance should be that found
730 * at <code>Employee.class</code>.
731 *
732 * @param objectMappingKey
733 * The object mapping key by which the object mapping to be used
734 * is stored in the object mapping cache, in the persistence
735 * configuration used by this instance of the DAO class.
736 * @param primaryKeys
737 * The primary key values identifying the records to be read into
738 * objects.
739 * @return The list of objects coresponding to the given primary keys, read
740 * according to the given object mapping. If no records/objects were
741 * found by the given primary keys, an empty list is returned. An
742 * empty list is also returned if the collection of primary keys
743 * passed to this method is empty.
744 * @throws PersistenceException
745 * If anything goes wrong during the read, if no persistence
746 * configuration is set, if the persistence configuration
747 * contains no object reader, or if no object mapping could be
748 * found nor generated from the given object mapping key.
749 * @throws DAOException
750 */
751 public List readListByPrimaryKeys(Object objectMappingKey,
752 Collection primaryKeys) throws PersistenceException, DAOException;
753
754 /***
755 * Reads a list of objects from the database using the object mapping stored
756 * by the given object mapping key, and the given primary keys to identify
757 * the records in the database that coresponds to the objects to be read. If
758 * no records/objects were found by the given primary keys, an empty list is
759 * returned. An empty list is also returned if the collection of primary
760 * keys passed to this method is empty.
761 *
762 * <br/><br/>A connection to the database will be obtained from the
763 * getConnection() method of this instance.
764 *
765 * <br/><br/>If no object mapping is stored by the given object mapping
766 * key, a new object mapping will be attempted generated and stored by that
767 * object mapping key. An object mapping can only be generated automatically
768 * if the method key is either a</code> Class</code> instance, or a <code>
769 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
770 * a <code>Class</code> instance set (calling ObjectMappingKey's
771 * setObjectClass(Class theClass) method).
772 *
773 * <br/><br/>The <code>Class</code> instance should be the class of the
774 * objects to be read, meaning if you want to read objects of class <code>
775 * Employee</code> the <code>Class</code> instance should be that found
776 * at <code>Employee.class</code>.
777 *
778 * @param conn JDBC Connection.
779 * @param objectMappingKey
780 * The object mapping key by which the object mapping to be used
781 * is stored in the object mapping cache, in the persistence
782 * configuration used by this instance of the DAO class.
783 * @param primaryKeys
784 * The primary key values identifying the records to be read into
785 * objects.
786 * @return The list of objects coresponding to the given primary keys, read
787 * according to the given object mapping. If no records/objects were
788 * found by the given primary keys, an empty list is returned. An
789 * empty list is also returned if the collection of primary keys
790 * passed to this method is empty.
791 * @throws PersistenceException
792 * If anything goes wrong during the read, if no persistence
793 * configuration is set, if the persistence configuration
794 * contains no object reader, or if no object mapping could be
795 * found nor generated from the given object mapping key.
796 * @throws DAOException
797 */
798 public List readListByPrimaryKeys(Connection conn, Object objectMappingKey,
799 Collection primaryKeys) throws PersistenceException, DAOException;
800
801 /***
802 * Reads a list of objects from the database using the object mapping stored
803 * or generated by the given object mapping key, and the given SQL string.
804 * The objects will appear in the list in the same order their coresponding
805 * records appear in the <code>ResultSet</code> generated by the SQL
806 * string.
807 *
808 * <br/><br/>A connection to the database will be obtained from the
809 * getConnection() method of this instance.
810 *
811 * <br/><br/>If no object mapping is stored by the given object mapping
812 * key, a new object mapping will be attempted generated and stored by that
813 * object mapping key. An object mapping can only be generated automatically
814 * if the method key is either a</code> Class</code> instance, or a <code>
815 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
816 * a <code>Class</code> instance set (calling ObjectMappingKey's
817 * setObjectClass(Class theClass) method).
818 *
819 * <br/><br/>The <code>Class</code> instance should be the class of the
820 * objects to be read, meaning if you want to read objects of class <code>
821 * Employee</code> the <code>Class</code> instance should be that found
822 * at <code>Employee.class</code>.
823 *
824 * @param objectMappingKey
825 * The object mapping key by which the object mapping to be used
826 * is stored in the object mapping cache, in the persistence
827 * configuration used by this instance of the DAO class.
828 * @param sql
829 * The String string locating the records to be read into
830 * objects.
831 * @return A <code>List</code> of objects read from the database.
832 * @throws PersistenceException
833 * If anything goes wrong during the read, if no persistence
834 * configuration is set, if the persistence configuration
835 * contains no object reader, or if no object mapping could be
836 * found nor generated from the given object mapping key.
837 * @throws DAOException
838 */
839 public List readList(Object objectMappingKey, String sql)
840 throws PersistenceException, DAOException;
841
842 /***
843 * Reads a list of objects from the database using the object mapping stored
844 * or generated by the given object mapping key, and the given SQL string.
845 * The objects will appear in the list in the same order their coresponding
846 * records appear in the <code>ResultSet</code> generated by the SQL
847 * string.
848 *
849 * <br/><br/>A connection to the database will be obtained from the
850 * getConnection() method of this instance.
851 *
852 * <br/><br/>If no object mapping is stored by the given object mapping
853 * key, a new object mapping will be attempted generated and stored by that
854 * object mapping key. An object mapping can only be generated automatically
855 * if the method key is either a</code> Class</code> instance, or a <code>
856 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
857 * a <code>Class</code> instance set (calling ObjectMappingKey's
858 * setObjectClass(Class theClass) method).
859 *
860 * <br/><br/>The <code>Class</code> instance should be the class of the
861 * objects to be read, meaning if you want to read objects of class <code>
862 * Employee</code> the <code>Class</code> instance should be that found
863 * at <code>Employee.class</code>.
864 *
865 * @param conn JDBC Connection.
866 * @param objectMappingKey
867 * The object mapping key by which the object mapping to be used
868 * is stored in the object mapping cache, in the persistence
869 * configuration used by this instance of the DAO class.
870 * @param sql
871 * The String string locating the records to be read into
872 * objects.
873 * @return A <code>List</code> of objects read from the database.
874 * @throws PersistenceException
875 * If anything goes wrong during the read, if no persistence
876 * configuration is set, if the persistence configuration
877 * contains no object reader, or if no object mapping could be
878 * found nor generated from the given object mapping key.
879 * @throws DAOException
880 */
881 public List readList(Connection conn, Object objectMappingKey, String sql)
882 throws PersistenceException, DAOException;
883
884 /***
885 * Reads a list of objects from the given <code>ResultSet</code> using the
886 * object mapping stored or generated by the given object mapping key. The
887 * objects will appear in the list in the same order their coresponding
888 * records appear in the <code>ResultSet</code>.
889 *
890 * <br/><br/>No database connection will be opened. The object will be read
891 * from the provided <code>ResultSet</code>. You must remember to close
892 * the <code>ResultSet</code> yourself when you are done with it.
893 *
894 * <br/><br/>If no object mapping is stored by the given object mapping
895 * key, a new object mapping will be attempted generated and stored by that
896 * object mapping key. An object mapping can only be generated automatically
897 * if the method key is either a</code> Class</code> instance, or a <code>
898 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
899 * a <code>Class</code> instance set (calling ObjectMappingKey's
900 * setObjectClass(Class theClass) method).
901 *
902 * <br/><br/>The <code>Class</code> instance should be the class of the
903 * objects to be read, meaning if you want to read objects of class <code>
904 * Employee</code> the <code>Class</code> instance should be that found
905 * at <code>Employee.class</code>.
906 *
907 * @param objectMappingKey
908 * The object mapping key by which the object mapping to be used
909 * is stored in the object mapping cache, in the persistence
910 * configuration used by this instance of the DAO class.
911 * @param result
912 * The <code>ResultSet</code> to read the list of objects from.
913 * @return A <code>List</code> of objects read from the database.
914 * @throws PersistenceException
915 * If anything goes wrong during the read, if no persistence
916 * configuration is set, if the persistence configuration
917 * contains no object reader, or if no object mapping could be
918 * found nor generated from the given object mapping key.
919 * @throws DAOException
920 */
921 public List readList(Object objectMappingKey, ResultSet result)
922 throws PersistenceException, DAOException;
923
924 /***
925 * Reads a list of objects from the given <code>ResultSet</code> using the
926 * object mapping stored or generated by the given object mapping key. The
927 * objects will appear in the list in the same order their coresponding
928 * records appear in the <code>ResultSet</code>.
929 *
930 * <br/><br/>No database connection will be opened. The object will be read
931 * from the provided <code>ResultSet</code>. You must remember to close
932 * the <code>ResultSet</code> yourself when you are done with it.
933 *
934 * <br/><br/>If no object mapping is stored by the given object mapping
935 * key, a new object mapping will be attempted generated and stored by that
936 * object mapping key. An object mapping can only be generated automatically
937 * if the method key is either a</code> Class</code> instance, or a <code>
938 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
939 * a <code>Class</code> instance set (calling ObjectMappingKey's
940 * setObjectClass(Class theClass) method).
941 *
942 * <br/><br/>The <code>Class</code> instance should be the class of the
943 * objects to be read, meaning if you want to read objects of class <code>
944 * Employee</code> the <code>Class</code> instance should be that found
945 * at <code>Employee.class</code>.
946 *
947 * @param conn JDBC Connection.
948 * @param objectMappingKey
949 * The object mapping key by which the object mapping to be used
950 * is stored in the object mapping cache, in the persistence
951 * configuration used by this instance of the DAO class.
952 * @param result
953 * The <code>ResultSet</code> to read the list of objects from.
954 * @return A <code>List</code> of objects read from the database.
955 * @throws PersistenceException
956 * If anything goes wrong during the read, if no persistence
957 * configuration is set, if the persistence configuration
958 * contains no object reader, or if no object mapping could be
959 * found nor generated from the given object mapping key.
960 * @throws DAOException
961 */
962 public List readList(Connection conn, Object objectMappingKey, ResultSet result)
963 throws PersistenceException, DAOException;
964
965 /***
966 * Reads a list of objects from the database using the given
967 * <code>Statement</code> instance, the given SQL string and the object
968 * mapping stored or generated by the given object mapping key. The objects
969 * will appear in the list in the same order their coresponding records
970 * appear in the <code>ResultSet</code> generated by the
971 * <code>Statement</code>'s execution of the SQL string.
972 *
973 * <br/><br/>Use this method if you need to use a special/customized
974 * <code>Statement</code> instance. If you don't need a special/customized
975 * <code>Statement</code> instance, the other <code>read</code> methods
976 * will be easier to use.
977 *
978 * No database connections will be opened. The objects will be read from the
979 * provided <code>Statement</code>. You must remember to close the
980 * <code>Statement</code> after your are dont with it.
981 *
982 *
983 * <br/><br/>If no object mapping is stored by the given object mapping
984 * key, a new object mapping will be attempted generated and stored by that
985 * object mapping key. An object mapping can only be generated automatically
986 * if the method key is either a</code> Class</code> instance, or a <code>
987 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
988 * a <code>Class</code> instance set (calling ObjectMappingKey's
989 * setObjectClass(Class theClass) method). The <code>Class</code> instance
990 * should be the class of the object to be stored, meaning if you want to
991 * store an object of class <code>Employee</code> the <code>Class</code>
992 * instance should be that found at <code>Employee.class</code>.
993 *
994 * @param objectMappingKey
995 * The object mapping key by which the object mapping to be used
996 * is stored in the object mapping cache, in the persistence
997 * configuration used by this instance of the DAO class.
998 * @param statement
999 * The <code>Statement</code> instance to be used to execute
1000 * the SQL string.
1001 * @param sql
1002 * The SQL string to be executed by the <code>Statement</code>
1003 * instance.
1004 * @return A <code>List</code> of objects read from the database.
1005 * @throws PersistenceException
1006 * If anything goes wrong during the read, if no persistence
1007 * configuration is set, if the persistence configuration
1008 * contains no object reader, or if no object mapping could be
1009 * found nor generated from the given object mapping key.
1010 * @throws DAOException
1011 */
1012 public List readList(Object objectMappingKey, Statement statement,
1013 String sql) throws PersistenceException, DAOException;
1014
1015 /***
1016 * Reads a list of objects from the database using the given
1017 * <code>Statement</code> instance, the given SQL string and the object
1018 * mapping stored or generated by the given object mapping key. The objects
1019 * will appear in the list in the same order their coresponding records
1020 * appear in the <code>ResultSet</code> generated by the
1021 * <code>Statement</code>'s execution of the SQL string.
1022 *
1023 * <br/><br/>Use this method if you need to use a special/customized
1024 * <code>Statement</code> instance. If you don't need a special/customized
1025 * <code>Statement</code> instance, the other <code>read</code> methods
1026 * will be easier to use.
1027 *
1028 * No database connections will be opened. The objects will be read from the
1029 * provided <code>Statement</code>. You must remember to close the
1030 * <code>Statement</code> after your are dont with it.
1031 *
1032 *
1033 * <br/><br/>If no object mapping is stored by the given object mapping
1034 * key, a new object mapping will be attempted generated and stored by that
1035 * object mapping key. An object mapping can only be generated automatically
1036 * if the method key is either a</code> Class</code> instance, or a <code>
1037 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
1038 * a <code>Class</code> instance set (calling ObjectMappingKey's
1039 * setObjectClass(Class theClass) method). The <code>Class</code> instance
1040 * should be the class of the object to be stored, meaning if you want to
1041 * store an object of class <code>Employee</code> the <code>Class</code>
1042 * instance should be that found at <code>Employee.class</code>.
1043 *
1044 * @param conn JDBC Connection.
1045 * @param objectMappingKey
1046 * The object mapping key by which the object mapping to be used
1047 * is stored in the object mapping cache, in the persistence
1048 * configuration used by this instance of the DAO class.
1049 * @param statement
1050 * The <code>Statement</code> instance to be used to execute
1051 * the SQL string.
1052 * @param sql
1053 * The SQL string to be executed by the <code>Statement</code>
1054 * instance.
1055 * @return A <code>List</code> of objects read from the database.
1056 * @throws PersistenceException
1057 * If anything goes wrong during the read, if no persistence
1058 * configuration is set, if the persistence configuration
1059 * contains no object reader, or if no object mapping could be
1060 * found nor generated from the given object mapping key.
1061 * @throws DAOException
1062 */
1063 public List readList(Connection conn, Object objectMappingKey, Statement statement,
1064 String sql) throws PersistenceException, DAOException;
1065
1066 /***
1067 * Reads a list of objects using the object mapping stored or generated by
1068 * the given object mapping key and <code>PreparedStatement</code>
1069 * instance. The <code>PreparedStatement</code> instance must have all
1070 * parameters set before calling this method (using the
1071 * PreparedStatement.setXXX(index, value) methods). The objects will appear
1072 * in the list in the same order their coresponding records appear in the
1073 * <code>ResultSet</code> generated by the <code>PreparedStatement</code>
1074 * instance.
1075 *
1076 * <br/><br/>No database connection will be opened. The object will be read
1077 * using the <code>PreparedStatement</code> passed as parameter. You must
1078 * remember to close the <code>PreparedStatement</code> yourself when you
1079 * are done with it.
1080 *
1081 * <br/><br/>If no object mapping is stored by the given object mapping
1082 * key, a new object mapping will be attempted generated and stored by that
1083 * object mapping key. An object mapping can only be generated automatically
1084 * if the method key is either a</code> Class</code> instance, or a <code>
1085 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
1086 * a <code>Class</code> instance set (calling ObjectMappingKey's
1087 * setObjectClass(Class theClass) method).
1088 *
1089 * The <code>Class</code> instance should be the class of the objects to
1090 * be read, meaning if you want to read objects of class <code>Employee
1091 * </code> the <code>Class</code> instance should be that found at <code>
1092 * Employee.class</code>.
1093 *
1094 * @param objectMappingKey
1095 * The object mapping key by which the object mapping to be used
1096 * is stored in the object mapping cache, in the persistence
1097 * configuration used by this instance of the DAO class.
1098 * @param statement
1099 * The <code>PreparedStatement</code> instance locating the
1100 * list of objects to read.
1101 * @return A <code>List</code> of objects read from the database.
1102 * @throws PersistenceException
1103 * If anything goes wrong during the read, if no persistence
1104 * configuration is set, if the persistence configuration
1105 * contains no object reader, or if no object mapping could be
1106 * found nor generated from the given object mapping key.
1107 * @throws DAOException
1108 */
1109 public List readList(Object objectMappingKey, PreparedStatement statement)
1110 throws PersistenceException, DAOException;
1111
1112 /***
1113 * Reads a list of objects using the object mapping stored or generated by
1114 * the given object mapping key and <code>PreparedStatement</code>
1115 * instance. The <code>PreparedStatement</code> instance must have all
1116 * parameters set before calling this method (using the
1117 * PreparedStatement.setXXX(index, value) methods). The objects will appear
1118 * in the list in the same order their coresponding records appear in the
1119 * <code>ResultSet</code> generated by the <code>PreparedStatement</code>
1120 * instance.
1121 *
1122 * <br/><br/>No database connection will be opened. The object will be read
1123 * using the <code>PreparedStatement</code> passed as parameter. You must
1124 * remember to close the <code>PreparedStatement</code> yourself when you
1125 * are done with it.
1126 *
1127 * <br/><br/>If no object mapping is stored by the given object mapping
1128 * key, a new object mapping will be attempted generated and stored by that
1129 * object mapping key. An object mapping can only be generated automatically
1130 * if the method key is either a</code> Class</code> instance, or a <code>
1131 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
1132 * a <code>Class</code> instance set (calling ObjectMappingKey's
1133 * setObjectClass(Class theClass) method).
1134 *
1135 * The <code>Class</code> instance should be the class of the objects to
1136 * be read, meaning if you want to read objects of class <code>Employee
1137 * </code> the <code>Class</code> instance should be that found at <code>
1138 * Employee.class</code>.
1139 *
1140 * @param conn JDBC Connection.
1141 * @param objectMappingKey
1142 * The object mapping key by which the object mapping to be used
1143 * is stored in the object mapping cache, in the persistence
1144 * configuration used by this instance of the DAO class.
1145 * @param statement
1146 * The <code>PreparedStatement</code> instance locating the
1147 * list of objects to read.
1148 * @return A <code>List</code> of objects read from the database.
1149 * @throws PersistenceException
1150 * If anything goes wrong during the read, if no persistence
1151 * configuration is set, if the persistence configuration
1152 * contains no object reader, or if no object mapping could be
1153 * found nor generated from the given object mapping key.
1154 * @throws DAOException
1155 */
1156 public List readList(Connection conn, Object objectMappingKey, PreparedStatement statement)
1157 throws PersistenceException, DAOException;
1158
1159 /***
1160 * Reads a list of objects using the object mapping stored or generated by
1161 * the given object mapping key, and a <code>PreparedStatement</code>
1162 * instance created from the sql parameter, and the parameter collection. A
1163 * <code>PreparedStatement</code> instance will be generated using the
1164 * connection obtained by calling getConnection(), and calling it's
1165 * prepareStatement(sql), where sql is the sql parameter passed in here as
1166 * parameter. Hence the sql parameter must match the format used with
1167 * prepared statements (? - mark for parameters)
1168 *
1169 * <br/><br/>The objects will appear in the list in the same order their
1170 * coresponding records appear in the <code>ResultSet</code> generated by
1171 * the <code>PreparedStatement</code> instance.
1172 *
1173 * <br/><br/>A connection to the database will be obtained from the
1174 * getConnection() method of this instance.
1175 *
1176 * <br/><br/>If no object mapping is stored by the given object mapping
1177 * key, a new object mapping will be attempted generated and stored by that
1178 * object mapping key. An object mapping can only be generated automatically
1179 * if the method key is either a</code> Class</code> instance, or a <code>
1180 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
1181 * a <code>Class</code> instance set (calling ObjectMappingKey's
1182 * setObjectClass(Class theClass) method).
1183 *
1184 * The <code>Class</code> instance should be the class of the objects to
1185 * be read, meaning if you want to read objects of class <code>Employee
1186 * </code> the <code>Class</code> instance should be that found at <code>
1187 * Employee.class</code>.
1188 *
1189 * @param objectMappingKey
1190 * The object mapping key by which the object mapping to be used
1191 * is stored in the object mapping cache, in the persistence
1192 * configuration used by this instance of the DAO class.
1193 * @param sql
1194 * The SQL string to use to prepare a <code>PreparedStatement
1195 * </code>.
1196 * @param parameters
1197 * The parameters to insert into the <code>PreparedStatement
1198 * </code>.
1199 * @return A <code>List</code> of objects read from the database.
1200 * @throws PersistenceException
1201 * If anything goes wrong during the read, if no persistence
1202 * configuration is set, if the persistence configuration
1203 * contains no object reader, or if no object mapping could be
1204 * found nor generated from the given object mapping key.
1205 * @throws DAOException
1206 */
1207 public List readList(Object objectMappingKey, String sql,
1208 Collection parameters) throws PersistenceException, DAOException;
1209
1210 /***
1211 * Reads a list of objects using the object mapping stored or generated by
1212 * the given object mapping key, and a <code>PreparedStatement</code>
1213 * instance created from the sql parameter, and the parameter collection. A
1214 * <code>PreparedStatement</code> instance will be generated using the
1215 * connection obtained by calling getConnection(), and calling it's
1216 * prepareStatement(sql), where sql is the sql parameter passed in here as
1217 * parameter. Hence the sql parameter must match the format used with
1218 * prepared statements (? - mark for parameters)
1219 *
1220 * <br/><br/>The objects will appear in the list in the same order their
1221 * coresponding records appear in the <code>ResultSet</code> generated by
1222 * the <code>PreparedStatement</code> instance.
1223 *
1224 * <br/><br/>A connection to the database will be obtained from the
1225 * getConnection() method of this instance.
1226 *
1227 * <br/><br/>If no object mapping is stored by the given object mapping
1228 * key, a new object mapping will be attempted generated and stored by that
1229 * object mapping key. An object mapping can only be generated automatically
1230 * if the method key is either a</code> Class</code> instance, or a <code>
1231 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
1232 * a <code>Class</code> instance set (calling ObjectMappingKey's
1233 * setObjectClass(Class theClass) method).
1234 *
1235 * The <code>Class</code> instance should be the class of the objects to
1236 * be read, meaning if you want to read objects of class <code>Employee
1237 * </code> the <code>Class</code> instance should be that found at <code>
1238 * Employee.class</code>.
1239 *
1240 * @param conn JDBC Connection.
1241 * @param objectMappingKey
1242 * The object mapping key by which the object mapping to be used
1243 * is stored in the object mapping cache, in the persistence
1244 * configuration used by this instance of the DAO class.
1245 * @param sql
1246 * The SQL string to use to prepare a <code>PreparedStatement
1247 * </code>.
1248 * @param parameters
1249 * The parameters to insert into the <code>PreparedStatement
1250 * </code>.
1251 * @return A <code>List</code> of objects read from the database.
1252 * @throws PersistenceException
1253 * If anything goes wrong during the read, if no persistence
1254 * configuration is set, if the persistence configuration
1255 * contains no object reader, or if no object mapping could be
1256 * found nor generated from the given object mapping key.
1257 * @throws DAOException
1258 */
1259 public List readList(Connection conn, Object objectMappingKey, String sql,
1260 Collection parameters) throws PersistenceException, DAOException;
1261
1262 /***
1263 * Reads a list of objects using the object mapping stored or generated by
1264 * the given object mapping key, and a <code>PreparedStatement</code>
1265 * instance created from the sql parameter, and the parameter array. A
1266 * <code>PreparedStatement</code> instance will be generated using the
1267 * connection obtained by calling getConnection(), and calling it's
1268 * prepareStatement(sql), where sql is the sql parameter passed in here as
1269 * parameter. Hence the sql parameter must match the format used with
1270 * prepared statements (? - mark for parameters)
1271 *
1272 * <br/><br/>The objects will appear in the list in the same order their
1273 * coresponding records appear in the <code>ResultSet</code> generated by
1274 * the <code>PreparedStatement</code> instance.
1275 *
1276 * <br/><br/>A connection to the database will be obtained from the
1277 * getConnection() method of this instance.
1278 *
1279 * <br/><br/>If no object mapping is stored by the given object mapping
1280 * key, a new object mapping will be attempted generated and stored by that
1281 * object mapping key. An object mapping can only be generated automatically
1282 * if the method key is either a</code> Class</code> instance, or a <code>
1283 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
1284 * a <code>Class</code> instance set (calling ObjectMappingKey's
1285 * setObjectClass(Class theClass) method).
1286 *
1287 * The <code>Class</code> instance should be the class of the objects to
1288 * be read, meaning if you want to read objects of class <code>Employee
1289 * </code> the <code>Class</code> instance should be that found at <code>
1290 * Employee.class</code>.
1291 *
1292 * @param objectMappingKey
1293 * The object mapping key by which the object mapping to be used
1294 * is stored in the object mapping cache, in the persistence
1295 * configuration used by this instance of the DAO class.
1296 * @param sql
1297 * The SQL string to use to prepare a <code>PreparedStatement
1298 * </code>.
1299 * @param parameters
1300 * The parameters to insert into the <code>PreparedStatement
1301 * </code>.
1302 * @return A <code>List</code> of objects read from the database.
1303 * @throws PersistenceException
1304 * If anything goes wrong during the read, if no persistence
1305 * configuration is set, if the persistence configuration
1306 * contains no object reader, or if no object mapping could be
1307 * found nor generated from the given object mapping key.
1308 * @throws DAOException
1309 */
1310 public List readList(Object objectMappingKey, String sql,
1311 Object[] parameters) throws PersistenceException, DAOException;
1312
1313 /***
1314 * Reads a list of objects using the object mapping stored or generated by
1315 * the given object mapping key, and a <code>PreparedStatement</code>
1316 * instance created from the sql parameter, and the parameter array. A
1317 * <code>PreparedStatement</code> instance will be generated using the
1318 * connection obtained by calling getConnection(), and calling it's
1319 * prepareStatement(sql), where sql is the sql parameter passed in here as
1320 * parameter. Hence the sql parameter must match the format used with
1321 * prepared statements (? - mark for parameters)
1322 *
1323 * <br/><br/>The objects will appear in the list in the same order their
1324 * coresponding records appear in the <code>ResultSet</code> generated by
1325 * the <code>PreparedStatement</code> instance.
1326 *
1327 * <br/><br/>A connection to the database will be obtained from the
1328 * getConnection() method of this instance.
1329 *
1330 * <br/><br/>If no object mapping is stored by the given object mapping
1331 * key, a new object mapping will be attempted generated and stored by that
1332 * object mapping key. An object mapping can only be generated automatically
1333 * if the method key is either a</code> Class</code> instance, or a <code>
1334 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
1335 * a <code>Class</code> instance set (calling ObjectMappingKey's
1336 * setObjectClass(Class theClass) method).
1337 *
1338 * The <code>Class</code> instance should be the class of the objects to
1339 * be read, meaning if you want to read objects of class <code>Employee
1340 * </code> the <code>Class</code> instance should be that found at <code>
1341 * Employee.class</code>.
1342 *
1343 * @param conn JDBC Connection.
1344 * @param objectMappingKey
1345 * The object mapping key by which the object mapping to be used
1346 * is stored in the object mapping cache, in the persistence
1347 * configuration used by this instance of the DAO class.
1348 * @param sql
1349 * The SQL string to use to prepare a <code>PreparedStatement
1350 * </code>.
1351 * @param parameters
1352 * The parameters to insert into the <code>PreparedStatement
1353 * </code>.
1354 * @return A <code>List</code> of objects read from the database.
1355 * @throws PersistenceException
1356 * If anything goes wrong during the read, if no persistence
1357 * configuration is set, if the persistence configuration
1358 * contains no object reader, or if no object mapping could be
1359 * found nor generated from the given object mapping key.
1360 * @throws DAOException
1361 */
1362 public List readList(Connection conn, Object objectMappingKey, String sql,
1363 Object[] parameters) throws PersistenceException, DAOException;
1364
1365 /***
1366 * Reads a list of objects from the database using the object mapping stored
1367 * or generated by the given object mapping key, and the given SQL string.
1368 * The objects will appear in the list in the same order their coresponding
1369 * records appear in the <code>ResultSet</code> generated by the SQL
1370 * string.
1371 *
1372 * <br/><br/>The filter passed as parameter can include or exclude the
1373 * records as they are iterated. If a filter excludes a record it will not
1374 * be included in the list of objects read. A filter can also end the
1375 * reading by signalling that it will not accept anymore records. No more
1376 * records will then be iterated, and the objects read so far will be
1377 * returned. If null is passed in the filter parameter no filtering will
1378 * occur, and all records located by the SQL string will be included in the
1379 * returned list.
1380 *
1381 * <br/><br/>A connection to the database will be obtained from the
1382 * getConnection() method of this instance.
1383 *
1384 * <br/><br/>If no object mapping is stored by the given object mapping
1385 * key, a new object mapping will be attempted generated and stored by that
1386 * object mapping key. An object mapping can only be generated automatically
1387 * if the method key is either a</code> Class</code> instance, or a <code>
1388 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
1389 * a <code>Class</code> instance set (calling ObjectMappingKey's
1390 * setObjectClass(Class theClass) method).
1391 *
1392 * <br/><br/>The <code>Class</code> instance should be the class of the
1393 * objects to be read, meaning if you want to read objects of class <code>
1394 * Employee</code> the <code>Class</code> instance should be that found
1395 * at <code>Employee.class</code>.
1396 *
1397 * @param objectMappingKey
1398 * The object mapping key by which the object mapping to be used
1399 * is stored in the object mapping cache, in the persistence
1400 * configuration used by this instance of the DAO class.
1401 * @param sql
1402 * The SQL string locating the records to read into objects.
1403 * @param filter
1404 * A filter that can include or exclude individual records.
1405 * @return A <code>List</code> of objects read from the database.
1406 * @throws PersistenceException
1407 * If anything goes wrong during the read, if no persistence
1408 * configuration is set, if the persistence configuration
1409 * contains no object reader, or if no object mapping could be
1410 * found nor generated from the given object mapping key.
1411 * @throws DAOException
1412 */
1413 public List readList(Object objectMappingKey, String sql, IReadFilter filter)
1414 throws PersistenceException, DAOException;
1415
1416 /***
1417 * Reads a list of objects from the database using the object mapping stored
1418 * or generated by the given object mapping key, and the given SQL string.
1419 * The objects will appear in the list in the same order their coresponding
1420 * records appear in the <code>ResultSet</code> generated by the SQL
1421 * string.
1422 *
1423 * <br/><br/>The filter passed as parameter can include or exclude the
1424 * records as they are iterated. If a filter excludes a record it will not
1425 * be included in the list of objects read. A filter can also end the
1426 * reading by signalling that it will not accept anymore records. No more
1427 * records will then be iterated, and the objects read so far will be
1428 * returned. If null is passed in the filter parameter no filtering will
1429 * occur, and all records located by the SQL string will be included in the
1430 * returned list.
1431 *
1432 * <br/><br/>A connection to the database will be obtained from the
1433 * getConnection() method of this instance.
1434 *
1435 * <br/><br/>If no object mapping is stored by the given object mapping
1436 * key, a new object mapping will be attempted generated and stored by that
1437 * object mapping key. An object mapping can only be generated automatically
1438 * if the method key is either a</code> Class</code> instance, or a <code>
1439 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
1440 * a <code>Class</code> instance set (calling ObjectMappingKey's
1441 * setObjectClass(Class theClass) method).
1442 *
1443 * <br/><br/>The <code>Class</code> instance should be the class of the
1444 * objects to be read, meaning if you want to read objects of class <code>
1445 * Employee</code> the <code>Class</code> instance should be that found
1446 * at <code>Employee.class</code>.
1447 *
1448 * @param conn JDBC Connection.
1449 * @param objectMappingKey
1450 * The object mapping key by which the object mapping to be used
1451 * is stored in the object mapping cache, in the persistence
1452 * configuration used by this instance of the DAO class.
1453 * @param sql
1454 * The SQL string locating the records to read into objects.
1455 * @param filter
1456 * A filter that can include or exclude individual records.
1457 * @return A <code>List</code> of objects read from the database.
1458 * @throws PersistenceException
1459 * If anything goes wrong during the read, if no persistence
1460 * configuration is set, if the persistence configuration
1461 * contains no object reader, or if no object mapping could be
1462 * found nor generated from the given object mapping key.
1463 * @throws DAOException
1464 */
1465 public List readList(Connection conn, Object objectMappingKey, String sql, IReadFilter filter)
1466 throws PersistenceException, DAOException;
1467
1468 /***
1469 * Reads a list of objects from the given <code>ResultSet</code> using the
1470 * object mapping stored or generated by the given object mapping key. The
1471 * objects will appear in the list in the same order their coresponding
1472 * records appear in the <code>ResultSet</code>.
1473 *
1474 * <br/><br/>The filter passed as parameter can include or exclude the
1475 * records as they are iterated. If a filter excludes a record it will not
1476 * be included in the list of objects read. A filter can also end the
1477 * reading by signalling that it will not accept anymore records. No more
1478 * records will then be iterated, and the objects read so far will be
1479 * returned. If null is passed in the filter parameter no filtering will
1480 * occur, and all records in the <code>ResultSet</code> will be included
1481 * in the returned list.
1482 *
1483 * <br/><br/>No database connection will be opened. The object will be read
1484 * from the provided <code>ResultSet</code>. You must remember to close
1485 * the <code>ResultSet</code> yourself when you are done with it.
1486 *
1487 * <br/><br/>If no object mapping is stored by the given object mapping
1488 * key, a new object mapping will be attempted generated and stored by that
1489 * object mapping key. An object mapping can only be generated automatically
1490 * if the method key is either a</code> Class</code> instance, or a <code>
1491 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
1492 * a <code>Class</code> instance set (calling ObjectMappingKey's
1493 * setObjectClass(Class theClass) method).
1494 *
1495 * <br/><br/>The <code>Class</code> instance should be the class of the
1496 * objects to be read, meaning if you want to read objects of class <code>
1497 * Employee</code> the <code>Class</code> instance should be that found
1498 * at <code>Employee.class</code>.
1499 *
1500 * @param objectMappingKey
1501 * The object mapping key by which the object mapping to be used
1502 * is stored in the object mapping cache, in the persistence
1503 * configuration used by this instance of the DAO class.
1504 * @param result
1505 * The <code>ResultSet</code> to read the list of objects from.
1506 * @param filter
1507 * A filter that can include or exclude individual records.
1508 * @return A <code>List</code> of objects read from the database.
1509 * @throws PersistenceException
1510 * If anything goes wrong during the read, if no persistence
1511 * configuration is set, if the persistence configuration
1512 * contains no object reader, or if no object mapping could be
1513 * found nor generated from the given object mapping key.
1514 * @throws DAOException
1515 */
1516 public List readList(Object objectMappingKey, ResultSet result,
1517 IReadFilter filter) throws PersistenceException, DAOException;
1518
1519 /***
1520 * Reads a list of objects from the given <code>ResultSet</code> using the
1521 * object mapping stored or generated by the given object mapping key. The
1522 * objects will appear in the list in the same order their coresponding
1523 * records appear in the <code>ResultSet</code>.
1524 *
1525 * <br/><br/>The filter passed as parameter can include or exclude the
1526 * records as they are iterated. If a filter excludes a record it will not
1527 * be included in the list of objects read. A filter can also end the
1528 * reading by signalling that it will not accept anymore records. No more
1529 * records will then be iterated, and the objects read so far will be
1530 * returned. If null is passed in the filter parameter no filtering will
1531 * occur, and all records in the <code>ResultSet</code> will be included
1532 * in the returned list.
1533 *
1534 * <br/><br/>No database connection will be opened. The object will be read
1535 * from the provided <code>ResultSet</code>. You must remember to close
1536 * the <code>ResultSet</code> yourself when you are done with it.
1537 *
1538 * <br/><br/>If no object mapping is stored by the given object mapping
1539 * key, a new object mapping will be attempted generated and stored by that
1540 * object mapping key. An object mapping can only be generated automatically
1541 * if the method key is either a</code> Class</code> instance, or a <code>
1542 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
1543 * a <code>Class</code> instance set (calling ObjectMappingKey's
1544 * setObjectClass(Class theClass) method).
1545 *
1546 * <br/><br/>The <code>Class</code> instance should be the class of the
1547 * objects to be read, meaning if you want to read objects of class <code>
1548 * Employee</code> the <code>Class</code> instance should be that found
1549 * at <code>Employee.class</code>.
1550 *
1551 * @param conn JDBC Connection.
1552 * @param objectMappingKey
1553 * The object mapping key by which the object mapping to be used
1554 * is stored in the object mapping cache, in the persistence
1555 * configuration used by this instance of the DAO class.
1556 * @param result
1557 * The <code>ResultSet</code> to read the list of objects from.
1558 * @param filter
1559 * A filter that can include or exclude individual records.
1560 * @return A <code>List</code> of objects read from the database.
1561 * @throws PersistenceException
1562 * If anything goes wrong during the read, if no persistence
1563 * configuration is set, if the persistence configuration
1564 * contains no object reader, or if no object mapping could be
1565 * found nor generated from the given object mapping key.
1566 * @throws DAOException
1567 */
1568 public List readList(Connection conn, Object objectMappingKey, ResultSet result,
1569 IReadFilter filter) throws PersistenceException, DAOException;
1570
1571 /***
1572 * Reads a list of objects from the database using the given
1573 * <code>Statement</code> instance, the given SQL string and the object
1574 * mapping stored or generated by the given object mapping key. The objects
1575 * will appear in the list in the same order their coresponding records
1576 * appear in the <code>ResultSet</code> generated by the
1577 * <code>Statement</code>'s execution of the SQL string.
1578 *
1579 * <br/><br/>The filter passed as parameter can include or exclude the
1580 * records as they are iterated. If a filter excludes a record it will not
1581 * be included in the list of objects read. A filter can also end the
1582 * reading by signalling that it will not accept anymore records. No more
1583 * records will then be iterated, and the objects read so far will be
1584 * returned. If null is passed in the filter parameter no filtering will
1585 * occur, and all records in the <code>ResultSet</code> will be included
1586 * in the returned list.
1587 *
1588 * <br/><br/>Use this method if you need to use a special/customized
1589 * <code>Statement</code> instance. If you don't need a special/customized
1590 * <code>Statement</code> instance, the other <code>read</code> methods
1591 * will be easier to use.
1592 *
1593 * <br/><br/>No database connection will be opened. The object will be read
1594 * from the provided <code>Statement</code>. You must remember to close
1595 * the <code>Statement</code> yourself when you are done with it.
1596 *
1597 * <br/><br/>If no object mapping is stored by the given object mapping
1598 * key, a new object mapping will be attempted generated and stored by that
1599 * object mapping key. An object mapping can only be generated automatically
1600 * if the method key is either a</code> Class</code> instance, or a <code>
1601 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
1602 * a <code>Class</code> instance set (calling ObjectMappingKey's
1603 * setObjectClass(Class theClass) method).
1604 *
1605 * <br/><br/>The <code>Class</code> instance should be the class of the
1606 * objects to be read, meaning if you want to read objects of class <code>
1607 * Employee</code> the <code>Class</code> instance should be that found
1608 * at <code>Employee.class</code>.
1609 *
1610 * @param objectMappingKey
1611 * The object mapping key by which the object mapping to be used
1612 * is stored in the object mapping cache, in the persistence
1613 * configuration used by this instance of the DAO class.
1614 * @param statement
1615 * The <code>Statement</code> instance to be used to execute
1616 * the SQL string.
1617 * @param sql
1618 * The SQL string to be executed by the <code>Statement</code>
1619 * instance.
1620 * @param filter
1621 * A filter that can include or exclude individual records.
1622 * @return A <code>List</code> of objects read from the database.
1623 * @throws PersistenceException
1624 * If anything goes wrong during the read, if no persistence
1625 * configuration is set, if the persistence configuration
1626 * contains no object reader, or if no object mapping could be
1627 * found nor generated from the given object mapping key.
1628 * @throws DAOException
1629 */
1630 public List readList(Object objectMappingKey, Statement statement,
1631 String sql, IReadFilter filter) throws PersistenceException, DAOException;
1632
1633 /***
1634 * Reads a list of objects from the database using the given
1635 * <code>Statement</code> instance, the given SQL string and the object
1636 * mapping stored or generated by the given object mapping key. The objects
1637 * will appear in the list in the same order their coresponding records
1638 * appear in the <code>ResultSet</code> generated by the
1639 * <code>Statement</code>'s execution of the SQL string.
1640 *
1641 * <br/><br/>The filter passed as parameter can include or exclude the
1642 * records as they are iterated. If a filter excludes a record it will not
1643 * be included in the list of objects read. A filter can also end the
1644 * reading by signalling that it will not accept anymore records. No more
1645 * records will then be iterated, and the objects read so far will be
1646 * returned. If null is passed in the filter parameter no filtering will
1647 * occur, and all records in the <code>ResultSet</code> will be included
1648 * in the returned list.
1649 *
1650 * <br/><br/>Use this method if you need to use a special/customized
1651 * <code>Statement</code> instance. If you don't need a special/customized
1652 * <code>Statement</code> instance, the other <code>read</code> methods
1653 * will be easier to use.
1654 *
1655 * <br/><br/>No database connection will be opened. The object will be read
1656 * from the provided <code>Statement</code>. You must remember to close
1657 * the <code>Statement</code> yourself when you are done with it.
1658 *
1659 * <br/><br/>If no object mapping is stored by the given object mapping
1660 * key, a new object mapping will be attempted generated and stored by that
1661 * object mapping key. An object mapping can only be generated automatically
1662 * if the method key is either a</code> Class</code> instance, or a <code>
1663 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
1664 * a <code>Class</code> instance set (calling ObjectMappingKey's
1665 * setObjectClass(Class theClass) method).
1666 *
1667 * <br/><br/>The <code>Class</code> instance should be the class of the
1668 * objects to be read, meaning if you want to read objects of class <code>
1669 * Employee</code> the <code>Class</code> instance should be that found
1670 * at <code>Employee.class</code>.
1671 *
1672 * @param conn JDBC Connection.
1673 * @param objectMappingKey
1674 * The object mapping key by which the object mapping to be used
1675 * is stored in the object mapping cache, in the persistence
1676 * configuration used by this instance of the DAO class.
1677 * @param statement
1678 * The <code>Statement</code> instance to be used to execute
1679 * the SQL string.
1680 * @param sql
1681 * The SQL string to be executed by the <code>Statement</code>
1682 * instance.
1683 * @param filter
1684 * A filter that can include or exclude individual records.
1685 * @return A <code>List</code> of objects read from the database.
1686 * @throws PersistenceException
1687 * If anything goes wrong during the read, if no persistence
1688 * configuration is set, if the persistence configuration
1689 * contains no object reader, or if no object mapping could be
1690 * found nor generated from the given object mapping key.
1691 * @throws DAOException
1692 */
1693 public List readList(Connection conn, Object objectMappingKey, Statement statement,
1694 String sql, IReadFilter filter) throws PersistenceException, DAOException;
1695
1696 /***
1697 * Reads a list of objects using the object mapping stored or generated by
1698 * the given object mapping key and <code>PreparedStatement</code>
1699 * instance. The <code>PreparedStatement</code> instance must have all
1700 * parameters set before calling this method (using the
1701 * PreparedStatement.setXXX(index, value) methods). The objects will appear
1702 * in the list in the same order their coresponding records appear in the
1703 * <code>ResultSet</code> generated by the <code>PreparedStatement</code>
1704 * instance.
1705 *
1706 * <br/><br/>The filter passed as parameter can include or exclude the
1707 * records as they are iterated. If a filter excludes a record it will not
1708 * be included in the list of objects read. A filter can also end the
1709 * reading by signalling that it will not accept anymore records. No more
1710 * records will then be iterated, and the objects read so far will be
1711 * returned. If null is passed in the filter parameter no filtering will
1712 * occur, and all records in the <code>ResultSet</code> will be included
1713 * in the returned list.
1714 *
1715 * <br/><br/>No database connection will be opened. The object will be read
1716 * from the provided <code>PreparedStatement</code>. You must remember to
1717 * close the <code>PreparedStatement</code> yourself when you are done
1718 * with it.
1719 *
1720 * <br/><br/>If no object mapping is stored by the given object mapping
1721 * key, a new object mapping will be attempted generated and stored by that
1722 * object mapping key. An object mapping can only be generated automatically
1723 * if the method key is either a</code> Class</code> instance, or a <code>
1724 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
1725 * a <code>Class</code> instance set (calling ObjectMappingKey's
1726 * setObjectClass(Class theClass) method).
1727 *
1728 * <br/><br/>The <code>Class</code> instance should be the class of the
1729 * object to be , meaning if you want to store an object of class <code>
1730 * Employee</code> the <code>Class</code> instance should be that found
1731 * at <code>Employee.class</code>.
1732 *
1733 * @param objectMappingKey
1734 * The object mapping key by which the object mapping to be used
1735 * is stored in the object mapping cache, in the persistence
1736 * configuration used by this instance of the DAO class.
1737 * @param statement
1738 * The <code>PreparedStatement</code> instance locating the
1739 * list of objects to read.
1740 * @param filter
1741 * A filter that can include or exclude individual records.
1742 * @return A <code>List</code> of objects read from the database.
1743 * @throws PersistenceException
1744 * If anything goes wrong during the read, if no persistence
1745 * configuration is set, if the persistence configuration
1746 * contains no object reader, or if no object mapping could be
1747 * found nor generated from the given object mapping key.
1748 * @throws DAOException
1749 */
1750 public List readList(Object objectMappingKey, PreparedStatement statement,
1751 IReadFilter filter) throws PersistenceException, DAOException;
1752
1753 /***
1754 * Reads a list of objects using the object mapping stored or generated by
1755 * the given object mapping key and <code>PreparedStatement</code>
1756 * instance. The <code>PreparedStatement</code> instance must have all
1757 * parameters set before calling this method (using the
1758 * PreparedStatement.setXXX(index, value) methods). The objects will appear
1759 * in the list in the same order their coresponding records appear in the
1760 * <code>ResultSet</code> generated by the <code>PreparedStatement</code>
1761 * instance.
1762 *
1763 * <br/><br/>The filter passed as parameter can include or exclude the
1764 * records as they are iterated. If a filter excludes a record it will not
1765 * be included in the list of objects read. A filter can also end the
1766 * reading by signalling that it will not accept anymore records. No more
1767 * records will then be iterated, and the objects read so far will be
1768 * returned. If null is passed in the filter parameter no filtering will
1769 * occur, and all records in the <code>ResultSet</code> will be included
1770 * in the returned list.
1771 *
1772 * <br/><br/>No database connection will be opened. The object will be read
1773 * from the provided <code>PreparedStatement</code>. You must remember to
1774 * close the <code>PreparedStatement</code> yourself when you are done
1775 * with it.
1776 *
1777 * <br/><br/>If no object mapping is stored by the given object mapping
1778 * key, a new object mapping will be attempted generated and stored by that
1779 * object mapping key. An object mapping can only be generated automatically
1780 * if the method key is either a</code> Class</code> instance, or a <code>
1781 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
1782 * a <code>Class</code> instance set (calling ObjectMappingKey's
1783 * setObjectClass(Class theClass) method).
1784 *
1785 * <br/><br/>The <code>Class</code> instance should be the class of the
1786 * object to be , meaning if you want to store an object of class <code>
1787 * Employee</code> the <code>Class</code> instance should be that found
1788 * at <code>Employee.class</code>.
1789 *
1790 * @param conn JDBC Connection.
1791 * @param objectMappingKey
1792 * The object mapping key by which the object mapping to be used
1793 * is stored in the object mapping cache, in the persistence
1794 * configuration used by this instance of the DAO class.
1795 * @param statement
1796 * The <code>PreparedStatement</code> instance locating the
1797 * list of objects to read.
1798 * @param filter
1799 * A filter that can include or exclude individual records.
1800 * @return A <code>List</code> of objects read from the database.
1801 * @throws PersistenceException
1802 * If anything goes wrong during the read, if no persistence
1803 * configuration is set, if the persistence configuration
1804 * contains no object reader, or if no object mapping could be
1805 * found nor generated from the given object mapping key.
1806 * @throws DAOException
1807 */
1808 public List readList(Connection conn, Object objectMappingKey, PreparedStatement statement,
1809 IReadFilter filter) throws PersistenceException, DAOException;
1810
1811 /***
1812 * Reads a list of objects using the object mapping stored or generated by
1813 * the given object mapping key, and a <code>PreparedStatement</code>
1814 * instance created from the sql parameter, and the parameter array. A
1815 * <code>PreparedStatement</code> instance will be generated using the
1816 * connection obtained by calling getConnection(), and calling it's
1817 * prepareStatement(sql), where sql is the sql parameter passed in here as
1818 * parameter. Hence the sql parameter must match the format used with
1819 * prepared statements (? - mark for parameters)
1820 *
1821 * <br/><br/>The objects will appear in the list in the same order their
1822 * coresponding records appear in the <code>ResultSet</code> generated by
1823 * the <code>PreparedStatement</code> instance.
1824 *
1825 * <br/><br/>A connection to the database will be obtained from the
1826 * getConnection() method of this instance.
1827 *
1828 * <br/><br/>The filter passed as parameter can include or exclude the
1829 * records as they are iterated. If a filter excludes a record it will not
1830 * be included in the list of objects read. A filter can also end the
1831 * reading by signalling that it will not accept anymore records. No more
1832 * records will then be iterated, and the objects read so far will be
1833 * returned. If null is passed in the filter parameter no filtering will
1834 * occur, and all records in the <code>ResultSet</code> will be included
1835 * in the returned list.
1836 *
1837 * <br/><br/>If no object mapping is stored by the given object mapping
1838 * key, a new object mapping will be attempted generated and stored by that
1839 * object mapping key. An object mapping can only be generated automatically
1840 * if the method key is either a</code> Class</code> instance, or a <code>
1841 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
1842 * a <code>Class</code> instance set (calling ObjectMappingKey's
1843 * setObjectClass(Class theClass) method).
1844 *
1845 * The <code>Class</code> instance should be the class of the objects to
1846 * be read, meaning if you want to read objects of class <code>Employee
1847 * </code> the <code>Class</code> instance should be that found at <code>
1848 * Employee.class</code>.
1849 *
1850 *
1851 * @param objectMappingKey
1852 * The object mapping key by which the object mapping to be used
1853 * is stored in the object mapping cache, in the persistence
1854 * configuration used by this instance of the DAO class.
1855 * @param sql
1856 * The SQL string to use to prepare a <code>PreparedStatement
1857 * </code>.
1858 * @param parameters
1859 * The parameters to insert into the <code>PreparedStatement
1860 * </code>.
1861 * @param filter
1862 * A filter that can include or exclude individual records.
1863 * @return A <code>List</code> of objects read from the database.
1864 * @throws PersistenceException
1865 * If anything goes wrong during the read, if no persistence
1866 * configuration is set, if the persistence configuration
1867 * contains no object reader, or if no object mapping could be
1868 * found nor generated from the given object mapping key.
1869 * @throws DAOException
1870 */
1871 public List readList(Object objectMappingKey, String sql,
1872 Collection parameters, IReadFilter filter)
1873 throws PersistenceException, DAOException;
1874
1875 /***
1876 * Reads a list of objects using the object mapping stored or generated by
1877 * the given object mapping key, and a <code>PreparedStatement</code>
1878 * instance created from the sql parameter, and the parameter array. A
1879 * <code>PreparedStatement</code> instance will be generated using the
1880 * connection obtained by calling getConnection(), and calling it's
1881 * prepareStatement(sql), where sql is the sql parameter passed in here as
1882 * parameter. Hence the sql parameter must match the format used with
1883 * prepared statements (? - mark for parameters)
1884 *
1885 * <br/><br/>The objects will appear in the list in the same order their
1886 * coresponding records appear in the <code>ResultSet</code> generated by
1887 * the <code>PreparedStatement</code> instance.
1888 *
1889 * <br/><br/>A connection to the database will be obtained from the
1890 * getConnection() method of this instance.
1891 *
1892 * <br/><br/>The filter passed as parameter can include or exclude the
1893 * records as they are iterated. If a filter excludes a record it will not
1894 * be included in the list of objects read. A filter can also end the
1895 * reading by signalling that it will not accept anymore records. No more
1896 * records will then be iterated, and the objects read so far will be
1897 * returned. If null is passed in the filter parameter no filtering will
1898 * occur, and all records in the <code>ResultSet</code> will be included
1899 * in the returned list.
1900 *
1901 * <br/><br/>If no object mapping is stored by the given object mapping
1902 * key, a new object mapping will be attempted generated and stored by that
1903 * object mapping key. An object mapping can only be generated automatically
1904 * if the method key is either a</code> Class</code> instance, or a <code>
1905 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
1906 * a <code>Class</code> instance set (calling ObjectMappingKey's
1907 * setObjectClass(Class theClass) method).
1908 *
1909 * The <code>Class</code> instance should be the class of the objects to
1910 * be read, meaning if you want to read objects of class <code>Employee
1911 * </code> the <code>Class</code> instance should be that found at <code>
1912 * Employee.class</code>.
1913 *
1914 * @param conn JDBC Connection.
1915 * @param objectMappingKey
1916 * The object mapping key by which the object mapping to be used
1917 * is stored in the object mapping cache, in the persistence
1918 * configuration used by this instance of the DAO class.
1919 * @param sql
1920 * The SQL string to use to prepare a <code>PreparedStatement
1921 * </code>.
1922 * @param parameters
1923 * The parameters to insert into the <code>PreparedStatement
1924 * </code>.
1925 * @param filter
1926 * A filter that can include or exclude individual records.
1927 * @return A <code>List</code> of objects read from the database.
1928 * @throws PersistenceException
1929 * If anything goes wrong during the read, if no persistence
1930 * configuration is set, if the persistence configuration
1931 * contains no object reader, or if no object mapping could be
1932 * found nor generated from the given object mapping key.
1933 * @throws DAOException
1934 */
1935 public List readList(Connection conn, Object objectMappingKey, String sql,
1936 Collection parameters, IReadFilter filter)
1937 throws PersistenceException, DAOException;
1938
1939 /***
1940 * Reads a list of objects using the object mapping stored or generated by
1941 * the given object mapping key, and a <code>PreparedStatement</code>
1942 * instance created from the sql parameter, and the parameter array. A
1943 * <code>PreparedStatement</code> instance will be generated using the
1944 * connection obtained by calling getConnection(), and calling it's
1945 * prepareStatement(sql), where sql is the sql parameter passed in here as
1946 * parameter. Hence the sql parameter must match the format used with
1947 * prepared statements (? - mark for parameters)
1948 *
1949 * <br/><br/>The objects will appear in the list in the same order their
1950 * coresponding records appear in the <code>ResultSet</code> generated by
1951 * the <code>PreparedStatement</code> instance.
1952 *
1953 * <br/><br/>A connection to the database will be obtained from the
1954 * getConnection() method of this instance.
1955 *
1956 * <br/><br/>The filter passed as parameter can include or exclude the
1957 * records as they are iterated. If a filter excludes a record it will not
1958 * be included in the list of objects read. A filter can also end the
1959 * reading by signalling that it will not accept anymore records. No more
1960 * records will then be iterated, and the objects read so far will be
1961 * returned. If null is passed in the filter parameter no filtering will
1962 * occur, and all records in the <code>ResultSet</code> will be included
1963 * in the returned list.
1964 *
1965 * <br/><br/>If no object mapping is stored by the given object mapping
1966 * key, a new object mapping will be attempted generated and stored by that
1967 * object mapping key. An object mapping can only be generated automatically
1968 * if the method key is either a</code> Class</code> instance, or a <code>
1969 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
1970 * a <code>Class</code> instance set (calling ObjectMappingKey's
1971 * setObjectClass(Class theClass) method).
1972 *
1973 * The <code>Class</code> instance should be the class of the objects to
1974 * be read, meaning if you want to read objects of class <code>Employee
1975 * </code> the <code>Class</code> instance should be that found at <code>
1976 * Employee.class</code>.
1977 *
1978 *
1979 * @param objectMappingKey
1980 * The object mapping key by which the object mapping to be used
1981 * is stored in the object mapping cache, in the persistence
1982 * configuration used by this instance of the DAO class.
1983 * @param sql
1984 * The SQL string to use to prepare a <code>PreparedStatement
1985 * </code>.
1986 * @param parameters
1987 * The parameters to insert into the <code>PreparedStatement
1988 * </code>.
1989 * @param filter
1990 * A filter that can include or exclude individual records.
1991 * @return A <code>List</code> of objects read from the database.
1992 * @throws PersistenceException
1993 * If anything goes wrong during the read, if no persistence
1994 * configuration is set, if the persistence configuration
1995 * contains no object reader, or if no object mapping could be
1996 * found nor generated from the given object mapping key.
1997 * @throws DAOException
1998 */
1999 public List readList(Object objectMappingKey, String sql,
2000 Object[] parameters, IReadFilter filter)
2001 throws PersistenceException, DAOException;
2002
2003 /***
2004 * Reads a list of objects using the object mapping stored or generated by
2005 * the given object mapping key, and a <code>PreparedStatement</code>
2006 * instance created from the sql parameter, and the parameter array. A
2007 * <code>PreparedStatement</code> instance will be generated using the
2008 * connection obtained by calling getConnection(), and calling it's
2009 * prepareStatement(sql), where sql is the sql parameter passed in here as
2010 * parameter. Hence the sql parameter must match the format used with
2011 * prepared statements (? - mark for parameters)
2012 *
2013 * <br/><br/>The objects will appear in the list in the same order their
2014 * coresponding records appear in the <code>ResultSet</code> generated by
2015 * the <code>PreparedStatement</code> instance.
2016 *
2017 * <br/><br/>A connection to the database will be obtained from the
2018 * getConnection() method of this instance.
2019 *
2020 * <br/><br/>The filter passed as parameter can include or exclude the
2021 * records as they are iterated. If a filter excludes a record it will not
2022 * be included in the list of objects read. A filter can also end the
2023 * reading by signalling that it will not accept anymore records. No more
2024 * records will then be iterated, and the objects read so far will be
2025 * returned. If null is passed in the filter parameter no filtering will
2026 * occur, and all records in the <code>ResultSet</code> will be included
2027 * in the returned list.
2028 *
2029 * <br/><br/>If no object mapping is stored by the given object mapping
2030 * key, a new object mapping will be attempted generated and stored by that
2031 * object mapping key. An object mapping can only be generated automatically
2032 * if the method key is either a</code> Class</code> instance, or a <code>
2033 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
2034 * a <code>Class</code> instance set (calling ObjectMappingKey's
2035 * setObjectClass(Class theClass) method).
2036 *
2037 * The <code>Class</code> instance should be the class of the objects to
2038 * be read, meaning if you want to read objects of class <code>Employee
2039 * </code> the <code>Class</code> instance should be that found at <code>
2040 * Employee.class</code>.
2041 *
2042 * @param conn JDBC Connection.
2043 * @param objectMappingKey
2044 * The object mapping key by which the object mapping to be used
2045 * is stored in the object mapping cache, in the persistence
2046 * configuration used by this instance of the DAO class.
2047 * @param sql
2048 * The SQL string to use to prepare a <code>PreparedStatement
2049 * </code>.
2050 * @param parameters
2051 * The parameters to insert into the <code>PreparedStatement
2052 * </code>.
2053 * @param filter
2054 * A filter that can include or exclude individual records.
2055 * @return A <code>List</code> of objects read from the database.
2056 * @throws PersistenceException
2057 * If anything goes wrong during the read, if no persistence
2058 * configuration is set, if the persistence configuration
2059 * contains no object reader, or if no object mapping could be
2060 * found nor generated from the given object mapping key.
2061 * @throws DAOException
2062 */
2063 public List readList(Connection conn, Object objectMappingKey, String sql,
2064 Object[] parameters, IReadFilter filter)
2065 throws PersistenceException, DAOException;
2066
2067 /***
2068 * Same as <code>insert(Object objectMappingKey, Object object)</code>,
2069 * but uses object.getClass() as the object mapping key.
2070 *
2071 * @param object
2072 * The object containing the values to be inserted into the new
2073 * record.
2074 * @return The number of records affected by this insert action, as returned
2075 * by <code>PreparedStatement.executeUpdate()</code>.
2076 * @throws PersistenceException
2077 * If anything goes wrong during the insert, if no persistence
2078 * configuration is set, if the persistence configuration
2079 * contains no object writer, or if no object mapping could be
2080 * found nor generated from the given object mapping key.
2081 */
2082 public int insert(Object object) throws PersistenceException, DAOException;
2083
2084 /***
2085 * Same as <code>insert(Object objectMappingKey, Object object)</code>,
2086 * but uses object.getClass() as the object mapping key.
2087 *
2088 * @param conn
2089 * JDBC Connection.
2090 * @param object
2091 * The object containing the values to be inserted into the new
2092 * record.
2093 * @return The number of records affected by this insert action, as returned
2094 * by <code>PreparedStatement.executeUpdate()</code>.
2095 * @throws PersistenceException
2096 * If anything goes wrong during the insert, if no persistence
2097 * configuration is set, if the persistence configuration
2098 * contains no object writer, or if no object mapping could be
2099 * found nor generated from the given object mapping key.
2100 * @throws DAOException.
2101 */
2102 public int insert(Connection conn, Object object)
2103 throws PersistenceException, DAOException;
2104
2105 /***
2106 * Inserts a record in the database with the values from the given object
2107 * according to the object mapping stored or generated by the given object
2108 * mapping key.
2109 *
2110 * <br/><br/>A connection to the database will be obtained from the
2111 * getConnection() method of this instance.
2112 *
2113 * <br/><br/>If no object mapping is stored by the given object mapping
2114 * key, a new object mapping will be attempted generated and stored by that
2115 * object mapping key. An object mapping can only be generated automatically
2116 * if the method key is either a</code> Class</code> instance, or a <code>
2117 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
2118 * a <code>Class</code> instance set (calling ObjectMappingKey's
2119 * setObjectClass(Class theClass) method).
2120 *
2121 * <br/><br/>The <code>Class</code> instance should be the class of the
2122 * object to be inserted, meaning if you want to insert an object of class
2123 * <code>Employee</code> the <code>Class</code> instance should be that
2124 * found at <code>Employee.class</code>.
2125 *
2126 * <br/><br/>The SQL needed to insert the record will be generated
2127 * automatically based on the object mapping, and executed using a <code>
2128 * PreparedStatement</code>. The SQL string contains "?" characters for
2129 * the values will be cached for later use to avoid the SQL generation
2130 * overhead.
2131 *
2132 * @param objectMappingKey
2133 * The object mapping key by which the object mapping to be used
2134 * is stored in the object mapping cache, in the persistence
2135 * configuration used by this instance of the DAO class.
2136 * @param object
2137 * The object containing the values to be inserted into the new
2138 * record.
2139 * @return The number of records affected by this insert action, as returned
2140 * by <code>PreparedStatement.executeUpdate()</code>.
2141 * @throws PersistenceException
2142 * If anything goes wrong during the insert, if no persistence
2143 * configuration is set, if the persistence configuration
2144 * contains no object writer, or if no object mapping could be
2145 * found nor generated from the given object mapping key.
2146 * @throws DAOException.
2147 */
2148 public int insert(Object objectMappingKey, Object object)
2149 throws PersistenceException, DAOException;
2150
2151 /***
2152 * Inserts a record in the database with the values from the given object
2153 * according to the object mapping stored or generated by the given object
2154 * mapping key.
2155 *
2156 * <br/><br/>A connection to the database will be obtained from the
2157 * getConnection() method of this instance.
2158 *
2159 * <br/><br/>If no object mapping is stored by the given object mapping
2160 * key, a new object mapping will be attempted generated and stored by that
2161 * object mapping key. An object mapping can only be generated automatically
2162 * if the method key is either a</code> Class</code> instance, or a <code>
2163 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
2164 * a <code>Class</code> instance set (calling ObjectMappingKey's
2165 * setObjectClass(Class theClass) method).
2166 *
2167 * <br/><br/>The <code>Class</code> instance should be the class of the
2168 * object to be inserted, meaning if you want to insert an object of class
2169 * <code>Employee</code> the <code>Class</code> instance should be that
2170 * found at <code>Employee.class</code>.
2171 *
2172 * <br/><br/>The SQL needed to insert the record will be generated
2173 * automatically based on the object mapping, and executed using a <code>
2174 * PreparedStatement</code>. The SQL string contains "?" characters for
2175 * the values will be cached for later use to avoid the SQL generation
2176 * overhead.
2177 *
2178 * @param conn
2179 * JDBC Connection.
2180 * @param objectMappingKey
2181 * The object mapping key by which the object mapping to be used
2182 * is stored in the object mapping cache, in the persistence
2183 * configuration used by this instance of the DAO class.
2184 * @param object
2185 * The object containing the values to be inserted into the new
2186 * record.
2187 * @return The number of records affected by this insert action, as returned
2188 * by <code>PreparedStatement.executeUpdate()</code>.
2189 * @throws PersistenceException
2190 * If anything goes wrong during the insert, if no persistence
2191 * configuration is set, if the persistence configuration
2192 * contains no object writer, or if no object mapping could be
2193 * found nor generated from the given object mapping key.
2194 * @throws DAOException.
2195 */
2196 public int insert(Connection conn, Object objectMappingKey, Object object)
2197 throws PersistenceException, DAOException;
2198
2199 /***
2200 * Same as
2201 * <code>insertBatch(Object objectMappingKey, Collection objects)</code>
2202 * but uses the class returned by the getClass() of the first element in the
2203 * collection as the object mapping key. The first element is extracted
2204 * using a standard Iterator.
2205 *
2206 * @param objects
2207 * The object containing the values to be inserted into the new
2208 * record.
2209 * @return The number of records affected by this insert action, as returned
2210 * by <code>PreparedStatement.executeUpdate()</code>.
2211 * @throws PersistenceException
2212 * If anything goes wrong during the insert, if no persistence
2213 * configuration is set, if the persistence configuration
2214 * contains no object writer, or if no object mapping could be
2215 * found nor generated from the given object mapping key.
2216 */
2217 public int[] insertBatch(Collection objects) throws PersistenceException,
2218 DAOException;
2219
2220 /***
2221 * Same as
2222 * <code>insertBatch(Object objectMappingKey, Collection objects)</code>
2223 * but uses the class returned by the getClass() of the first element in the
2224 * collection as the object mapping key. The first element is extracted
2225 * using a standard Iterator.
2226 *
2227 * @param objects
2228 * The object containing the values to be inserted into the new
2229 * record.
2230 * @return The number of records affected by this insert action, as returned
2231 * by <code>PreparedStatement.executeUpdate()</code>.
2232 * @throws PersistenceException
2233 * If anything goes wrong during the insert, if no persistence
2234 * configuration is set, if the persistence configuration
2235 * contains no object writer, or if no object mapping could be
2236 * found nor generated from the given object mapping key.
2237 */
2238 public int[] insertBatch(Connection conn, Collection objects)
2239 throws PersistenceException, DAOException;
2240
2241 /***
2242 * Inserts several records into the database with the values from the given
2243 * objects according to the object mapping stored or generated by the given
2244 * object mapping key.
2245 *
2246 * <br/><br/>A connection to the database will be obtained from the
2247 * getConnection() method of this instance.
2248 *
2249 * <br/><br/>If no object mapping is stored by the given object mapping
2250 * key, a new object mapping will be attempted generated and stored by that
2251 * object mapping key. An object mapping can only be generated automatically
2252 * if the method key is either a</code> Class</code> instance, or a <code>
2253 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
2254 * a <code>Class</code> instance set (calling ObjectMappingKey's
2255 * setObjectClass(Class theClass) method).
2256 *
2257 * <br/><br/>The <code>Class</code> instance should be the class of the
2258 * objects to be inserted, meaning if you want to insert objects of class
2259 * <code>Employee</code> the <code>Class</code> instance should be that
2260 * found at <code>Employee.class</code>.
2261 *
2262 * <br/><br/>The SQL needed to insert the record will be generated
2263 * automatically based on the object mapping, and executed using a <code>
2264 * PreparedStatement</code>. The SQL string contains "?" characters for
2265 * the values will be cached for later use to avoid the SQL generation
2266 * overhead.
2267 *
2268 * @param objectMappingKey
2269 * The object mapping key by which the object mapping to be used
2270 * is stored in the object mapping cache, in the persistence
2271 * configuration used by this instance of the DAO class.
2272 * @param objects
2273 * The object containing the values to be inserted into the new
2274 * record.
2275 * @return The number of records affected by this insert action, as returned
2276 * by <code>PreparedStatement.executeUpdate()</code>.
2277 * @throws PersistenceException
2278 * If anything goes wrong during the insert, if no persistence
2279 * configuration is set, if the persistence configuration
2280 * contains no object writer, or if no object mapping could be
2281 * found nor generated from the given object mapping key.
2282 */
2283 public int[] insertBatch(Object objectMappingKey, Collection objects)
2284 throws PersistenceException;
2285
2286 /***
2287 * Same as <code>update(Object objectMappingKey, Object object)</code> but
2288 * uses the object.getClass() as the object mapping key.
2289 *
2290 * @param object
2291 * The object containing the values to be update in the
2292 * coresponding record.
2293 * @return The number of records affected by this update action, as returned
2294 * by <code>PreparedStatement.executeUpdate()</code>.
2295 * @throws PersistenceException
2296 * If anything goes wrong during the update, if no persistence
2297 * configuration is set, if the persistence configuration
2298 * contains no object writer, or if no object mapping could be
2299 * found nor generated from the given object mapping key.
2300 * @throws DAOException
2301 */
2302 public int update(Object object) throws PersistenceException, DAOException;
2303
2304 /***
2305 * Same as <code>update(Object objectMappingKey, Object object)</code> but
2306 * uses the object.getClass() as the object mapping key.
2307 *
2308 * @param conn JDBC Connection.
2309 * @param object
2310 * The object containing the values to be update in the
2311 * coresponding record.
2312 * @return The number of records affected by this update action, as returned
2313 * by <code>PreparedStatement.executeUpdate()</code>.
2314 * @throws PersistenceException
2315 * If anything goes wrong during the update, if no persistence
2316 * configuration is set, if the persistence configuration
2317 * contains no object writer, or if no object mapping could be
2318 * found nor generated from the given object mapping key.
2319 * @throws DAOException
2320 */
2321 public int update(Connection conn, Object object) throws PersistenceException, DAOException;
2322
2323 /***
2324 * Updates the record in the database coresponding to the given object, with
2325 * the values contained in this object, according to the object mapping
2326 * stored or generated by the given object mapping key.
2327 *
2328 * <br/><br/>Do not use this method if the primary key value is also
2329 * changed during the update, or this method will have no effect. If you do
2330 * use it for an update where the primary key has changed, the primary key
2331 * value in the "where" clause of the SQL will contain the new primary key
2332 * value. Since no records, or perhaps another existing record, matches the
2333 * new, changed, primary key value, the update will have no effect. If you
2334 * need to update a record including it's primary key, use the other update
2335 * method.
2336 *
2337 * <br/><br/>A connection to the database will be obtained from the
2338 * getConnection() method of this instance.
2339 *
2340 * <br/><br/>If no object mapping is stored by the given object mapping
2341 * key, a new object mapping will be attempted generated and stored by that
2342 * object mapping key. An object mapping can only be generated automatically
2343 * if the method key is either a</code> Class</code> instance, or a <code>
2344 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
2345 * a <code>Class</code> instance set (calling ObjectMappingKey's
2346 * setObjectClass(Class theClass) method).
2347 *
2348 * <br/><br/>The <code>Class</code> instance should be the class of the
2349 * object to be updated, meaning if you want to update an object of class
2350 * <code>Employee</code> the <code>Class</code> instance should be that
2351 * found at <code>Employee.class</code>.
2352 *
2353 * <br/><br/>The SQL needed to update the record will be generated
2354 * automatically based on the object mapping, and executed using a <code>
2355 * PreparedStatement</code>. The SQL string contains "?" characters for
2356 * the values will be cached for later use to avoid the SQL generation
2357 * overhead.
2358 *
2359 * @param objectMappingKey
2360 * The object mapping key by which the object mapping to be used
2361 * is stored in the object mapping cache, in the persistence
2362 * configuration used by this instance of the DAO class.
2363 * @param object
2364 * The object containing the values to be update in the
2365 * coresponding record.
2366 * @return The number of records affected by this update action, as returned
2367 * by <code>PreparedStatement.executeUpdate()</code>.
2368 * @throws PersistenceException
2369 * If anything goes wrong during the update, if no persistence
2370 * configuration is set, if the persistence configuration
2371 * contains no object writer, or if no object mapping could be
2372 * found nor generated from the given object mapping key.
2373 * @throws DAOException
2374 */
2375 public int update(Object objectMappingKey, Object object)
2376 throws PersistenceException, DAOException;
2377
2378 /***
2379 * Updates the record in the database coresponding to the given object, with
2380 * the values contained in this object, according to the object mapping
2381 * stored or generated by the given object mapping key.
2382 *
2383 * <br/><br/>Do not use this method if the primary key value is also
2384 * changed during the update, or this method will have no effect. If you do
2385 * use it for an update where the primary key has changed, the primary key
2386 * value in the "where" clause of the SQL will contain the new primary key
2387 * value. Since no records, or perhaps another existing record, matches the
2388 * new, changed, primary key value, the update will have no effect. If you
2389 * need to update a record including it's primary key, use the other update
2390 * method.
2391 *
2392 * <br/><br/>A connection to the database will be obtained from the
2393 * getConnection() method of this instance.
2394 *
2395 * <br/><br/>If no object mapping is stored by the given object mapping
2396 * key, a new object mapping will be attempted generated and stored by that
2397 * object mapping key. An object mapping can only be generated automatically
2398 * if the method key is either a</code> Class</code> instance, or a <code>
2399 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
2400 * a <code>Class</code> instance set (calling ObjectMappingKey's
2401 * setObjectClass(Class theClass) method).
2402 *
2403 * <br/><br/>The <code>Class</code> instance should be the class of the
2404 * object to be updated, meaning if you want to update an object of class
2405 * <code>Employee</code> the <code>Class</code> instance should be that
2406 * found at <code>Employee.class</code>.
2407 *
2408 * <br/><br/>The SQL needed to update the record will be generated
2409 * automatically based on the object mapping, and executed using a <code>
2410 * PreparedStatement</code>. The SQL string contains "?" characters for
2411 * the values will be cached for later use to avoid the SQL generation
2412 * overhead.
2413 *
2414 * @param conn JDBC Connection.
2415 * @param objectMappingKey
2416 * The object mapping key by which the object mapping to be used
2417 * is stored in the object mapping cache, in the persistence
2418 * configuration used by this instance of the DAO class.
2419 * @param object
2420 * The object containing the values to be update in the
2421 * coresponding record.
2422 * @return The number of records affected by this update action, as returned
2423 * by <code>PreparedStatement.executeUpdate()</code>.
2424 * @throws PersistenceException
2425 * If anything goes wrong during the update, if no persistence
2426 * configuration is set, if the persistence configuration
2427 * contains no object writer, or if no object mapping could be
2428 * found nor generated from the given object mapping key.
2429 * @throws DAOException
2430 */
2431 public int update(Connection conn, Object objectMappingKey, Object object)
2432 throws PersistenceException, DAOException;
2433
2434 /***
2435 * Same as
2436 * <code>updateByPrimaryKey(Object objectMappingKey, Object object, Object oldPrimaryKeyValue)</code>
2437 * but uses the object.getClass() as the object mapping key.
2438 *
2439 * @param object
2440 * The object containing the values to be update in the
2441 * coresponding record.
2442 * @param oldPrimaryKeyValue
2443 * The primary key value of the record to update, meaning the
2444 * value of the primary key before it was changed in the object
2445 * to update.
2446 * @return The number of records affected by this update action, as returned
2447 * by <code>PreparedStatement.executeUpdate()</code>.
2448 * @throws PersistenceException
2449 * If anything goes wrong during the update, if no persistence
2450 * configuration is set, if the persistence configuration
2451 * contains no object writer, or if no object mapping could be
2452 * found nor generated from the given object mapping key.
2453 * @throws DAOException
2454 */
2455 public int updateByPrimaryKey(Object object, Object oldPrimaryKeyValue)
2456 throws PersistenceException, DAOException;
2457
2458 /***
2459 * Same as
2460 * <code>updateByPrimaryKey(Object objectMappingKey, Object object, Object oldPrimaryKeyValue)</code>
2461 * but uses the object.getClass() as the object mapping key.
2462 *
2463 * @param conn JDBC Connection.
2464 * @param object
2465 * The object containing the values to be update in the
2466 * coresponding record.
2467 * @param oldPrimaryKeyValue
2468 * The primary key value of the record to update, meaning the
2469 * value of the primary key before it was changed in the object
2470 * to update.
2471 * @return The number of records affected by this update action, as returned
2472 * by <code>PreparedStatement.executeUpdate()</code>.
2473 * @throws PersistenceException
2474 * If anything goes wrong during the update, if no persistence
2475 * configuration is set, if the persistence configuration
2476 * contains no object writer, or if no object mapping could be
2477 * found nor generated from the given object mapping key.
2478 * @throws DAOException
2479 */
2480 public int updateByPrimaryKey(Connection conn, Object object, Object oldPrimaryKeyValue)
2481 throws PersistenceException, DAOException;
2482
2483 /***
2484 * Updates the record in the database coresponding to the given object, with
2485 * the values contained in this object, according to the object mapping
2486 * stored or generated by the given object mapping key.
2487 *
2488 * <br/><br/>Use this method when updating records in which you also change
2489 * the primary key value. This method inserts the old primary key value into
2490 * the "where" clause of the PreparedStatement, so the correct record is
2491 * updated.
2492 *
2493 * <br/><br/>A connection to the database will be obtained from the
2494 * getConnection() method of this instance.
2495 *
2496 * <br/><br/>If no object mapping is stored by the given object mapping
2497 * key, a new object mapping will be attempted generated and stored by that
2498 * object mapping key. An object mapping can only be generated automatically
2499 * if the method key is either a</code> Class</code> instance, or a <code>
2500 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
2501 * a <code>Class</code> instance set (calling ObjectMappingKey's
2502 * setObjectClass(Class theClass) method).
2503 *
2504 * <br/><br/>The <code>Class</code> instance should be the class of the
2505 * object to be updated, meaning if you want to update an object of class
2506 * <code>Employee</code> the <code>Class</code> instance should be that
2507 * found at <code>Employee.class</code>.
2508 *
2509 * <br/><br/>The SQL needed to update the record will be generated
2510 * automatically based on the object mapping, and executed using a <code>
2511 * PreparedStatement</code>. The SQL string contains "?" characters for
2512 * the values will be cached for later use to avoid the SQL generation
2513 * overhead.
2514 *
2515 * @param objectMappingKey
2516 * The object mapping key by which the object mapping to be used
2517 * is stored in the object mapping cache, in the persistence
2518 * configuration used by this instance of the DAO class.
2519 * @param object
2520 * The object containing the values to be update in the
2521 * coresponding record.
2522 * @param oldPrimaryKeyValue
2523 * The primary key value of the record to update, meaning the
2524 * value of the primary key before it was changed in the object
2525 * to update.
2526 * @return The number of records affected by this update action, as returned
2527 * by <code>PreparedStatement.executeUpdate()</code>.
2528 * @throws PersistenceException
2529 * If anything goes wrong during the update, if no persistence
2530 * configuration is set, if the persistence configuration
2531 * contains no object writer, or if no object mapping could be
2532 * found nor generated from the given object mapping key.
2533 * @throws DAOException
2534 */
2535 public int updateByPrimaryKey(Object objectMappingKey, Object object,
2536 Object oldPrimaryKeyValue) throws PersistenceException, DAOException;
2537
2538 /***
2539 * Updates the record in the database coresponding to the given object, with
2540 * the values contained in this object, according to the object mapping
2541 * stored or generated by the given object mapping key.
2542 *
2543 * <br/><br/>Use this method when updating records in which you also change
2544 * the primary key value. This method inserts the old primary key value into
2545 * the "where" clause of the PreparedStatement, so the correct record is
2546 * updated.
2547 *
2548 * <br/><br/>A connection to the database will be obtained from the
2549 * getConnection() method of this instance.
2550 *
2551 * <br/><br/>If no object mapping is stored by the given object mapping
2552 * key, a new object mapping will be attempted generated and stored by that
2553 * object mapping key. An object mapping can only be generated automatically
2554 * if the method key is either a</code> Class</code> instance, or a <code>
2555 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
2556 * a <code>Class</code> instance set (calling ObjectMappingKey's
2557 * setObjectClass(Class theClass) method).
2558 *
2559 * <br/><br/>The <code>Class</code> instance should be the class of the
2560 * object to be updated, meaning if you want to update an object of class
2561 * <code>Employee</code> the <code>Class</code> instance should be that
2562 * found at <code>Employee.class</code>.
2563 *
2564 * <br/><br/>The SQL needed to update the record will be generated
2565 * automatically based on the object mapping, and executed using a <code>
2566 * PreparedStatement</code>. The SQL string contains "?" characters for
2567 * the values will be cached for later use to avoid the SQL generation
2568 * overhead.
2569 *
2570 * @param conn JDBC Connection.
2571 * @param objectMappingKey
2572 * The object mapping key by which the object mapping to be used
2573 * is stored in the object mapping cache, in the persistence
2574 * configuration used by this instance of the DAO class.
2575 * @param object
2576 * The object containing the values to be update in the
2577 * coresponding record.
2578 * @param oldPrimaryKeyValue
2579 * The primary key value of the record to update, meaning the
2580 * value of the primary key before it was changed in the object
2581 * to update.
2582 * @return The number of records affected by this update action, as returned
2583 * by <code>PreparedStatement.executeUpdate()</code>.
2584 * @throws PersistenceException
2585 * If anything goes wrong during the update, if no persistence
2586 * configuration is set, if the persistence configuration
2587 * contains no object writer, or if no object mapping could be
2588 * found nor generated from the given object mapping key.
2589 * @throws DAOException
2590 */
2591 public int updateByPrimaryKey(Connection conn, Object objectMappingKey, Object object,
2592 Object oldPrimaryKeyValue) throws PersistenceException, DAOException;
2593
2594 /***
2595 * Same as
2596 * <code>updateBatch(Object objectMappingKey, Collection objects)</code>
2597 * the class returned by the getClass() of the first element in the
2598 * collection as the object mapping key.
2599 *
2600 * @param objects
2601 * The collection of objects containing the values for the
2602 * records to be updated.
2603 * @return An array containing the number of records affected by each update
2604 * action, as returned by
2605 * <code>PreparedStatement.executeBatch()</code>.
2606 * @throws PersistenceException
2607 * If anything goes wrong during the update, if no persistence
2608 * configuration is set, if the persistence configuration
2609 * contains no object writer, or if no object mapping could be
2610 * found nor generated from the given object mapping key.
2611 * @throws DAOException
2612 */
2613 public int[] updateBatch(Collection objects) throws PersistenceException, DAOException;
2614
2615 /***
2616 * Same as
2617 * <code>updateBatch(Object objectMappingKey, Collection objects)</code>
2618 * the class returned by the getClass() of the first element in the
2619 * collection as the object mapping key.
2620 *
2621 * @param conn JDBC Connection.
2622 * @param objects
2623 * The collection of objects containing the values for the
2624 * records to be updated.
2625 * @return An array containing the number of records affected by each update
2626 * action, as returned by
2627 * <code>PreparedStatement.executeBatch()</code>.
2628 * @throws PersistenceException
2629 * If anything goes wrong during the update, if no persistence
2630 * configuration is set, if the persistence configuration
2631 * contains no object writer, or if no object mapping could be
2632 * found nor generated from the given object mapping key.
2633 * @throws DAOException
2634 */
2635 public int[] updateBatch(Connection conn, Collection objects) throws PersistenceException, DAOException;
2636
2637 /***
2638 * Updates the records in the database coresponding to the given collection
2639 * of objects, with the values contained in these objects, according to the
2640 * object mapping stored or generated by the given object mapping key. This
2641 * method uses JDBC batch updates to do the job, meaning all SQL statements
2642 * are batched and sent to the database in one go.
2643 *
2644 * <br/><br/>Do not use this method if the primary key values are also
2645 * changed during the update, or this method will have no effect. If you do
2646 * use it for updates where the primary key has changed, the primary key
2647 * value in the "where" clause of the SQL will contain the new primary key
2648 * value. Since no records, or perhaps another existing record, match the
2649 * new, changed, primary key values, the update will have no effect. If you
2650 * need to batch update records including their primary keys, use the other
2651 * updateBatch method.
2652 *
2653 * <br/><br/>A connection to the database will be obtained from the
2654 * getConnection() method of this instance.
2655 *
2656 * <br/><br/>If no object mapping is stored by the given object mapping
2657 * key, a new object mapping will be attempted generated and stored by that
2658 * object mapping key. An object mapping can only be generated automatically
2659 * if the method key is either a</code> Class</code> instance, or a <code>
2660 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
2661 * a <code>Class</code> instance set (calling ObjectMappingKey's
2662 * setObjectClass(Class theClass) method).
2663 *
2664 * <br/><br/>The <code>Class</code> instance should be the class of the
2665 * objects to be updated, meaning if you want to update objects of class
2666 * <code>Employee</code> the <code>Class</code> instance should be that
2667 * found at <code>Employee.class</code>.
2668 *
2669 * <br/><br/>The SQL needed to update the record will be generated
2670 * automatically based on the object mapping, and executed using a <code>
2671 * PreparedStatement</code>. The SQL string contains "?" characters for
2672 * the values will be cached for later use to avoid the SQL generation
2673 * overhead.
2674 *
2675 * @param objectMappingKey
2676 * The object mapping key by which the object mapping to be used
2677 * is stored in the object mapping cache, in the persistence
2678 * configuration used by this instance of the DAO class.
2679 * @param objects
2680 * The collection of objects containing the values for the
2681 * records to be updated.
2682 * @return An array containing the number of records affected by each update
2683 * action, as returned by <code>PreparedStatement.executeBatch()
2684 * </code>.
2685 * @throws PersistenceException
2686 * If anything goes wrong during the update, if no persistence
2687 * configuration is set, if the persistence configuration
2688 * contains no object writer, or if no object mapping could be
2689 * found nor generated from the given object mapping key.
2690 * @throws DAOException
2691 */
2692 public int[] updateBatch(Object objectMappingKey, Collection objects)
2693 throws PersistenceException, DAOException;
2694
2695 /***
2696 * Updates the records in the database coresponding to the given collection
2697 * of objects, with the values contained in these objects, according to the
2698 * object mapping stored or generated by the given object mapping key. This
2699 * method uses JDBC batch updates to do the job, meaning all SQL statements
2700 * are batched and sent to the database in one go.
2701 *
2702 * <br/><br/>Do not use this method if the primary key values are also
2703 * changed during the update, or this method will have no effect. If you do
2704 * use it for updates where the primary key has changed, the primary key
2705 * value in the "where" clause of the SQL will contain the new primary key
2706 * value. Since no records, or perhaps another existing record, match the
2707 * new, changed, primary key values, the update will have no effect. If you
2708 * need to batch update records including their primary keys, use the other
2709 * updateBatch method.
2710 *
2711 * <br/><br/>A connection to the database will be obtained from the
2712 * getConnection() method of this instance.
2713 *
2714 * <br/><br/>If no object mapping is stored by the given object mapping
2715 * key, a new object mapping will be attempted generated and stored by that
2716 * object mapping key. An object mapping can only be generated automatically
2717 * if the method key is either a</code> Class</code> instance, or a <code>
2718 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
2719 * a <code>Class</code> instance set (calling ObjectMappingKey's
2720 * setObjectClass(Class theClass) method).
2721 *
2722 * <br/><br/>The <code>Class</code> instance should be the class of the
2723 * objects to be updated, meaning if you want to update objects of class
2724 * <code>Employee</code> the <code>Class</code> instance should be that
2725 * found at <code>Employee.class</code>.
2726 *
2727 * <br/><br/>The SQL needed to update the record will be generated
2728 * automatically based on the object mapping, and executed using a <code>
2729 * PreparedStatement</code>. The SQL string contains "?" characters for
2730 * the values will be cached for later use to avoid the SQL generation
2731 * overhead.
2732 *
2733 * @param conn JDBC Connection.
2734 * @param objectMappingKey
2735 * The object mapping key by which the object mapping to be used
2736 * is stored in the object mapping cache, in the persistence
2737 * configuration used by this instance of the DAO class.
2738 * @param objects
2739 * The collection of objects containing the values for the
2740 * records to be updated.
2741 * @return An array containing the number of records affected by each update
2742 * action, as returned by <code>PreparedStatement.executeBatch()
2743 * </code>.
2744 * @throws PersistenceException
2745 * If anything goes wrong during the update, if no persistence
2746 * configuration is set, if the persistence configuration
2747 * contains no object writer, or if no object mapping could be
2748 * found nor generated from the given object mapping key.
2749 * @throws DAOException
2750 */
2751 public int[] updateBatch(Connection conn, Object objectMappingKey, Collection objects)
2752 throws PersistenceException, DAOException;
2753
2754 /***
2755 * Same as
2756 * <code>updateBatchByPrimaryKeys(Object objectMappingKey, Collection objects, Collection oldPrimaryKeys)</code>
2757 * the class returned by the getClass() of the first element in the
2758 * collection as the object mapping key.
2759 *
2760 * @param objects
2761 * The collection of objects containing the values for the
2762 * records to be updated.
2763 * @param oldPrimaryKeys
2764 * The collection of old primary keys each matching an object in
2765 * the objects collection. The keys must be returned by the
2766 * collection iterator in the same sequence as the objects they
2767 * match are returned by the object.iterator().
2768 * @return An array containing the number of records affected by each update
2769 * action, as returned by
2770 * <code>PreparedStatement.executeBatch()</code>.
2771 * @throws PersistenceException
2772 * If anything goes wrong during the update, if no persistence
2773 * configuration is set, if the persistence configuration
2774 * contains no object writer, or if no object mapping could be
2775 * found nor generated from the given object mapping key.
2776 * @throws DAOException
2777 */
2778
2779 public int[] updateBatchByPrimaryKeys(Collection objects,
2780 Collection oldPrimaryKeys) throws PersistenceException, DAOException;
2781
2782 /***
2783 * Same as
2784 * <code>updateBatchByPrimaryKeys(Object objectMappingKey, Collection objects, Collection oldPrimaryKeys)</code>
2785 * the class returned by the getClass() of the first element in the
2786 * collection as the object mapping key.
2787 *
2788 * @param conn JDBC Connection.
2789 * @param objects
2790 * The collection of objects containing the values for the
2791 * records to be updated.
2792 * @param oldPrimaryKeys
2793 * The collection of old primary keys each matching an object in
2794 * the objects collection. The keys must be returned by the
2795 * collection iterator in the same sequence as the objects they
2796 * match are returned by the object.iterator().
2797 * @return An array containing the number of records affected by each update
2798 * action, as returned by
2799 * <code>PreparedStatement.executeBatch()</code>.
2800 * @throws PersistenceException
2801 * If anything goes wrong during the update, if no persistence
2802 * configuration is set, if the persistence configuration
2803 * contains no object writer, or if no object mapping could be
2804 * found nor generated from the given object mapping key.
2805 * @throws DAOException
2806 */
2807
2808 public int[] updateBatchByPrimaryKeys(Connection conn, Collection objects,
2809 Collection oldPrimaryKeys) throws PersistenceException, DAOException;
2810
2811 /***
2812 * Updates the records in the database coresponding to the given collection
2813 * of objects, with the values contained in these objects, according to the
2814 * object mapping stored or generated by the given object mapping key. This
2815 * method uses JDBC batch updates to do the job, meaning all SQL statements
2816 * are batched and sent to the database in one go.
2817 *
2818 * <br/><br/>Use this method if the primary key values are also changed
2819 * during the update. The old primary key values are used to identify the
2820 * records to be updated. The values of the primary keys in the objects are
2821 * the values the the primary keys of the records will have after the
2822 * update.
2823 *
2824 * <br/><br/>A connection to the database will be obtained from the
2825 * getConnection() method of this instance.
2826 *
2827 * <br/><br/>If no object mapping is stored by the given object mapping
2828 * key, a new object mapping will be attempted generated and stored by that
2829 * object mapping key. An object mapping can only be generated automatically
2830 * if the method key is either a</code> Class</code> instance, or a <code>
2831 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
2832 * a <code>Class</code> instance set (calling ObjectMappingKey's
2833 * setObjectClass(Class theClass) method).
2834 *
2835 * <br/><br/>The <code>Class</code> instance should be the class of the
2836 * objects to be updated, meaning if you want to update objects of class
2837 * <code>Employee</code> the <code>Class</code> instance should be that
2838 * found at <code>Employee.class</code>.
2839 *
2840 * <br/><br/>The SQL needed to update the record will be generated
2841 * automatically based on the object mapping, and executed using a <code>
2842 * PreparedStatement</code>. The SQL string contains "?" characters for
2843 * the values will be cached for later use to avoid the SQL generation
2844 * overhead.
2845 *
2846 * @param objectMappingKey
2847 * The object mapping key by which the object mapping to be used
2848 * is stored in the object mapping cache, in the persistence
2849 * configuration used by this instance of the DAO class.
2850 * @param objects
2851 * The collection of objects containing the values for the
2852 * records to be updated.
2853 * @param oldPrimaryKeys
2854 * The collection of old primary keys each matching an object in
2855 * the objects collection. The keys must be returned by the
2856 * collection iterator in the same sequence as the objects they
2857 * match are returned by the object.iterator().
2858 * @return An array containing the number of records affected by each update
2859 * action, as returned by <code>PreparedStatement.executeBatch()
2860 * </code>.
2861 * @throws PersistenceException
2862 * If anything goes wrong during the update, if no persistence
2863 * configuration is set, if the persistence configuration
2864 * contains no object writer, or if no object mapping could be
2865 * found nor generated from the given object mapping key.
2866 * @throws DAOException
2867 */
2868 public int[] updateBatchByPrimaryKeys(Object objectMappingKey,
2869 Collection objects, Collection oldPrimaryKeys)
2870 throws PersistenceException, DAOException;
2871
2872 /***
2873 * Updates the records in the database coresponding to the given collection
2874 * of objects, with the values contained in these objects, according to the
2875 * object mapping stored or generated by the given object mapping key. This
2876 * method uses JDBC batch updates to do the job, meaning all SQL statements
2877 * are batched and sent to the database in one go.
2878 *
2879 * <br/><br/>Use this method if the primary key values are also changed
2880 * during the update. The old primary key values are used to identify the
2881 * records to be updated. The values of the primary keys in the objects are
2882 * the values the the primary keys of the records will have after the
2883 * update.
2884 *
2885 * <br/><br/>A connection to the database will be obtained from the
2886 * getConnection() method of this instance.
2887 *
2888 * <br/><br/>If no object mapping is stored by the given object mapping
2889 * key, a new object mapping will be attempted generated and stored by that
2890 * object mapping key. An object mapping can only be generated automatically
2891 * if the method key is either a</code> Class</code> instance, or a <code>
2892 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
2893 * a <code>Class</code> instance set (calling ObjectMappingKey's
2894 * setObjectClass(Class theClass) method).
2895 *
2896 * <br/><br/>The <code>Class</code> instance should be the class of the
2897 * objects to be updated, meaning if you want to update objects of class
2898 * <code>Employee</code> the <code>Class</code> instance should be that
2899 * found at <code>Employee.class</code>.
2900 *
2901 * <br/><br/>The SQL needed to update the record will be generated
2902 * automatically based on the object mapping, and executed using a <code>
2903 * PreparedStatement</code>. The SQL string contains "?" characters for
2904 * the values will be cached for later use to avoid the SQL generation
2905 * overhead.
2906 *
2907 * @param conn JDBC Connection.
2908 * @param objectMappingKey
2909 * The object mapping key by which the object mapping to be used
2910 * is stored in the object mapping cache, in the persistence
2911 * configuration used by this instance of the DAO class.
2912 * @param objects
2913 * The collection of objects containing the values for the
2914 * records to be updated.
2915 * @param oldPrimaryKeys
2916 * The collection of old primary keys each matching an object in
2917 * the objects collection. The keys must be returned by the
2918 * collection iterator in the same sequence as the objects they
2919 * match are returned by the object.iterator().
2920 * @return An array containing the number of records affected by each update
2921 * action, as returned by <code>PreparedStatement.executeBatch()
2922 * </code>.
2923 * @throws PersistenceException
2924 * If anything goes wrong during the update, if no persistence
2925 * configuration is set, if the persistence configuration
2926 * contains no object writer, or if no object mapping could be
2927 * found nor generated from the given object mapping key.
2928 * @throws DAOException
2929 */
2930 public int[] updateBatchByPrimaryKeys(Connection conn, Object objectMappingKey,
2931 Collection objects, Collection oldPrimaryKeys)
2932 throws PersistenceException, DAOException;
2933
2934 /***
2935 * Same as <code>delete(Object objectMappingKey, Object object)</code> but
2936 * uses the object.getClass() as the object mapping key.
2937 *
2938 * @param object
2939 * The object containing the primary key of the record to be
2940 * deleted.
2941 * @return The number of records affected by this delete action, as returned
2942 * by <code>PreparedStatement.executeUpdate()</code>.
2943 * @throws PersistenceException
2944 * If anything goes wrong during the delete, if no persistence
2945 * configuration is set, if the persistence configuration
2946 * contains no object writer, or if no object mapping could be
2947 * found nor generated from the given object mapping key.
2948 * @throws DAOException
2949 */
2950 public int delete(Object object) throws PersistenceException, DAOException;
2951
2952 /***
2953 * Same as <code>delete(Object objectMappingKey, Object object)</code> but
2954 * uses the object.getClass() as the object mapping key.
2955 *
2956 * @param conn
2957 * JDBC Connection
2958 * @param object
2959 * The object containing the primary key of the record to be
2960 * deleted.
2961 * @return The number of records affected by this delete action, as returned
2962 * by <code>PreparedStatement.executeUpdate()</code>.
2963 * @throws PersistenceException
2964 * If anything goes wrong during the delete, if no persistence
2965 * configuration is set, if the persistence configuration
2966 * contains no object writer, or if no object mapping could be
2967 * found nor generated from the given object mapping key.
2968 * @throws DAOException
2969 */
2970 public int delete(Connection conn, Object object)
2971 throws PersistenceException, DAOException;
2972
2973 /***
2974 * Deletes the record from the database coresponding to the given object,
2975 * according to the object mapping stored or generated by the given object
2976 * mapping key.
2977 *
2978 * <br/><br/>A connection to the database will be obtained from the
2979 * getConnection() method of this instance.
2980 *
2981 * <br/><br/>If no object mapping is stored by the given object mapping
2982 * key, a new object mapping will be attempted generated and stored by that
2983 * object mapping key. An object mapping can only be generated automatically
2984 * if the method key is either a</code> Class</code> instance, or a <code>
2985 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
2986 * a <code>Class</code> instance set (calling ObjectMappingKey's
2987 * setObjectClass(Class theClass) method).
2988 *
2989 * <br/><br/>The <code>Class</code> instance should be the class of the
2990 * object to be deleted, meaning if you want to delete an object of class
2991 * <code>Employee</code> the <code>Class</code> instance should be that
2992 * found at <code>Employee.class</code>.
2993 *
2994 * <br/><br/>The SQL needed to delete the record will be generated
2995 * automatically based on the object mapping, and executed using a <code>
2996 * PreparedStatement</code>. The SQL string contains one or more "?"
2997 * characters for the primary key value and will thus be cached for later
2998 * use to avoid the SQL generation overhead.
2999 *
3000 * @param objectMappingKey
3001 * The object mapping key by which the object mapping to be used
3002 * is stored in the object mapping cache, in the persistence
3003 * configuration used by this instance of the DAO class.
3004 * @param object
3005 * The object containing the primary key of the record to be
3006 * deleted.
3007 * @return The number of records affected by this delete action, as returned
3008 * by <code>PreparedStatement.executeUpdate()</code>.
3009 * @throws PersistenceException
3010 * If anything goes wrong during the delete, if no persistence
3011 * configuration is set, if the persistence configuration
3012 * contains no object writer, or if no object mapping could be
3013 * found nor generated from the given object mapping key.
3014 * @throws DAOException
3015 */
3016 public int delete(Object objectMappingKey, Object object)
3017 throws PersistenceException, DAOException;
3018
3019 /***
3020 * Deletes the record from the database coresponding to the given object,
3021 * according to the object mapping stored or generated by the given object
3022 * mapping key.
3023 *
3024 * <br/><br/>A connection to the database will be obtained from the
3025 * getConnection() method of this instance.
3026 *
3027 * <br/><br/>If no object mapping is stored by the given object mapping
3028 * key, a new object mapping will be attempted generated and stored by that
3029 * object mapping key. An object mapping can only be generated automatically
3030 * if the method key is either a</code> Class</code> instance, or a <code>
3031 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
3032 * a <code>Class</code> instance set (calling ObjectMappingKey's
3033 * setObjectClass(Class theClass) method).
3034 *
3035 * <br/><br/>The <code>Class</code> instance should be the class of the
3036 * object to be deleted, meaning if you want to delete an object of class
3037 * <code>Employee</code> the <code>Class</code> instance should be that
3038 * found at <code>Employee.class</code>.
3039 *
3040 * <br/><br/>The SQL needed to delete the record will be generated
3041 * automatically based on the object mapping, and executed using a <code>
3042 * PreparedStatement</code>. The SQL string contains one or more "?"
3043 * characters for the primary key value and will thus be cached for later
3044 * use to avoid the SQL generation overhead.
3045 *
3046 * @param objectMappingKey
3047 * The object mapping key by which the object mapping to be used
3048 * is stored in the object mapping cache, in the persistence
3049 * configuration used by this instance of the DAO class.
3050 * @param object
3051 * The object containing the primary key of the record to be
3052 * deleted.
3053 * @return The number of records affected by this delete action, as returned
3054 * by <code>PreparedStatement.executeUpdate()</code>.
3055 * @throws PersistenceException
3056 * If anything goes wrong during the delete, if no persistence
3057 * configuration is set, if the persistence configuration
3058 * contains no object writer, or if no object mapping could be
3059 * found nor generated from the given object mapping key.
3060 * @throws DAOException
3061 */
3062 public int delete(Connection conn, Object objectMappingKey, Object object)
3063 throws PersistenceException, DAOException;
3064
3065 /***
3066 * Same as
3067 * <code>deleteBatch(Object objectMappingKey, Collection objects)</code>
3068 * but uses the class returned by the getClass() method of the first object
3069 * in the collection, as returned by the collection iterator, as the object
3070 * mapping key.
3071 *
3072 * @param objects
3073 * The collection containing the objects to be deleted.
3074 * @return The number of records affected by this delete action, as returned
3075 * by <code>PreparedStatement.executeUpdate()</code>.
3076 * @throws PersistenceException
3077 * If anything goes wrong during the delete, if no persistence
3078 * configuration is set, if the persistence configuration
3079 * contains no object writer, or if no object mapping could be
3080 * found nor generated from the given object mapping key.
3081 * @throws DAOException
3082 */
3083 public int[] deleteBatch(Collection objects) throws PersistenceException,
3084 DAOException;
3085
3086 /***
3087 * Same as
3088 * <code>deleteBatch(Object objectMappingKey, Collection objects)</code>
3089 * but uses the class returned by the getClass() method of the first object
3090 * in the collection, as returned by the collection iterator, as the object
3091 * mapping key.
3092 *
3093 * @param objects
3094 * The collection containing the objects to be deleted.
3095 * @return The number of records affected by this delete action, as returned
3096 * by <code>PreparedStatement.executeUpdate()</code>.
3097 * @throws PersistenceException
3098 * If anything goes wrong during the delete, if no persistence
3099 * configuration is set, if the persistence configuration
3100 * contains no object writer, or if no object mapping could be
3101 * found nor generated from the given object mapping key.
3102 * @throws DAOException
3103 */
3104 public int[] deleteBatch(Connection conn, Collection objects)
3105 throws PersistenceException, DAOException;
3106
3107 /***
3108 * Deletes the records from the database coresponding to the given objects,
3109 * according to the object mapping stored or generated by the given object
3110 * mapping key. This method uses JDBC batch updates to do the job, meaning
3111 * the delete statements are batched up and sent to the database in one go.
3112 *
3113 * <br/><br/>A connection to the database will be obtained from the
3114 * getConnection() method of this instance.
3115 *
3116 * <br/><br/>If no object mapping is stored by the given object mapping
3117 * key, a new object mapping will be attempted generated and stored by that
3118 * object mapping key. An object mapping can only be generated automatically
3119 * if the method key is either a</code> Class</code> instance, or a <code>
3120 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
3121 * a <code>Class</code> instance set (calling ObjectMappingKey's
3122 * setObjectClass(Class theClass) method).
3123 *
3124 * <br/><br/>The <code>Class</code> instance should be the class of the
3125 * objects to be deleted, meaning if you want to delete objects of class
3126 * <code>Employee</code> the <code>Class</code> instance should be that
3127 * found at <code>Employee.class</code>.
3128 *
3129 * <br/><br/>The SQL needed to delete the record will be generated
3130 * automatically based on the object mapping, and executed using a <code>
3131 * PreparedStatement</code>. The SQL string contains one or more "?"
3132 * characters for the primary key value and will thus be cached for later
3133 * use to avoid the SQL generation overhead.
3134 *
3135 * @param objectMappingKey
3136 * The object mapping key by which the object mapping to be used
3137 * is stored in the object mapping cache, in the persistence
3138 * configuration used by this instance of the DAO class.
3139 * @param objects
3140 * The collection containing the objects to be deleted.
3141 * @return The number of records affected by this delete action, as returned
3142 * by <code>PreparedStatement.executeUpdate()</code>.
3143 * @throws PersistenceException
3144 * If anything goes wrong during the delete, if no persistence
3145 * configuration is set, if the persistence configuration
3146 * contains no object writer, or if no object mapping could be
3147 * found nor generated from the given object mapping key.
3148 */
3149 public int[] deleteBatch(Object objectMappingKey, Collection objects)
3150 throws PersistenceException, DAOException;
3151
3152 /***
3153 * Deletes the records from the database coresponding to the given objects,
3154 * according to the object mapping stored or generated by the given object
3155 * mapping key. This method uses JDBC batch updates to do the job, meaning
3156 * the delete statements are batched up and sent to the database in one go.
3157 *
3158 * <br/><br/>A connection to the database will be obtained from the
3159 * getConnection() method of this instance.
3160 *
3161 * <br/><br/>If no object mapping is stored by the given object mapping
3162 * key, a new object mapping will be attempted generated and stored by that
3163 * object mapping key. An object mapping can only be generated automatically
3164 * if the method key is either a</code> Class</code> instance, or a <code>
3165 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
3166 * a <code>Class</code> instance set (calling ObjectMappingKey's
3167 * setObjectClass(Class theClass) method).
3168 *
3169 * <br/><br/>The <code>Class</code> instance should be the class of the
3170 * objects to be deleted, meaning if you want to delete objects of class
3171 * <code>Employee</code> the <code>Class</code> instance should be that
3172 * found at <code>Employee.class</code>.
3173 *
3174 * <br/><br/>The SQL needed to delete the record will be generated
3175 * automatically based on the object mapping, and executed using a <code>
3176 * PreparedStatement</code>. The SQL string contains one or more "?"
3177 * characters for the primary key value and will thus be cached for later
3178 * use to avoid the SQL generation overhead.
3179 *
3180 * @param conn
3181 * JDBC Conection.
3182 * @param objectMappingKey
3183 * The object mapping key by which the object mapping to be used
3184 * is stored in the object mapping cache, in the persistence
3185 * configuration used by this instance of the DAO class.
3186 * @param objects
3187 * The collection containing the objects to be deleted.
3188 * @return The number of records affected by this delete action, as returned
3189 * by <code>PreparedStatement.executeUpdate()</code>.
3190 * @throws PersistenceException
3191 * If anything goes wrong during the delete, if no persistence
3192 * configuration is set, if the persistence configuration
3193 * contains no object writer, or if no object mapping could be
3194 * found nor generated from the given object mapping key.
3195 * @throws DAOException
3196 */
3197 public int[] deleteBatch(Connection conn, Object objectMappingKey,
3198 Collection objects) throws PersistenceException, DAOException;
3199
3200 /***
3201 * Deletes the record from the database matching the given primary key,
3202 * according to the object mapping stored or generated by the given object
3203 * mapping key.
3204 *
3205 * <br/><br/>A connection to the database will be obtained from the
3206 * getConnection() method of this instance.
3207 *
3208 * <br/><br/>If no object mapping is stored by the given object mapping
3209 * key, a new object mapping will be attempted generated and stored by that
3210 * object mapping key. An object mapping can only be generated automatically
3211 * if the method key is either a</code> Class</code> instance, or a <code>
3212 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
3213 * a <code>Class</code> instance set (calling ObjectMappingKey's
3214 * setObjectClass(Class theClass) method).
3215 *
3216 * <br/><br/>The <code>Class</code> instance should be the class of the
3217 * object to be deleted, meaning if you want to delete an object of class
3218 * <code>Employee</code> the <code>Class</code> instance should be that
3219 * found at <code>Employee.class</code>.
3220 *
3221 * <br/><br/>The SQL needed to delete the record will be generated
3222 * automatically based on the object mapping, and executed using a <code>
3223 * PreparedStatement</code>. The SQL string contains one or more "?"
3224 * characters for the primary key value and will thus be cached for later
3225 * use to avoid the SQL generation overhead.
3226 *
3227 * @param objectMappingKey
3228 * The object mapping key by which the object mapping to be used
3229 * is stored in the object mapping cache, in the persistence
3230 * configuration used by this instance of the DAO class.
3231 * @param primaryKey
3232 * The primary key matching the record to be deleted.
3233 * @return The number of records affected by this delete action, as returned
3234 * by <code>PreparedStatement.executeUpdate()</code>.
3235 * @throws PersistenceException
3236 * If anything goes wrong during the delete, if no persistence
3237 * configuration is set, if the persistence configuration
3238 * contains no object writer, or if no object mapping could be
3239 * found nor generated from the given object mapping key.
3240 * @throws DAOException
3241 */
3242 public int deleteByPrimaryKey(Object objectMappingKey, Object primaryKey)
3243 throws PersistenceException, DAOException;
3244
3245 /***
3246 * Deletes the record from the database matching the given primary key,
3247 * according to the object mapping stored or generated by the given object
3248 * mapping key.
3249 *
3250 * <br/><br/>A connection to the database will be obtained from the
3251 * getConnection() method of this instance.
3252 *
3253 * <br/><br/>If no object mapping is stored by the given object mapping
3254 * key, a new object mapping will be attempted generated and stored by that
3255 * object mapping key. An object mapping can only be generated automatically
3256 * if the method key is either a</code> Class</code> instance, or a <code>
3257 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
3258 * a <code>Class</code> instance set (calling ObjectMappingKey's
3259 * setObjectClass(Class theClass) method).
3260 *
3261 * <br/><br/>The <code>Class</code> instance should be the class of the
3262 * object to be deleted, meaning if you want to delete an object of class
3263 * <code>Employee</code> the <code>Class</code> instance should be that
3264 * found at <code>Employee.class</code>.
3265 *
3266 * <br/><br/>The SQL needed to delete the record will be generated
3267 * automatically based on the object mapping, and executed using a <code>
3268 * PreparedStatement</code>. The SQL string contains one or more "?"
3269 * characters for the primary key value and will thus be cached for later
3270 * use to avoid the SQL generation overhead.
3271 *
3272 * @param conn
3273 * JDBC Connection.
3274 * @param objectMappingKey
3275 * The object mapping key by which the object mapping to be used
3276 * is stored in the object mapping cache, in the persistence
3277 * configuration used by this instance of the DAO class.
3278 * @param primaryKey
3279 * The primary key matching the record to be deleted.
3280 * @return The number of records affected by this delete action, as returned
3281 * by <code>PreparedStatement.executeUpdate()</code>.
3282 * @throws PersistenceException
3283 * If anything goes wrong during the delete, if no persistence
3284 * configuration is set, if the persistence configuration
3285 * contains no object writer, or if no object mapping could be
3286 * found nor generated from the given object mapping key.
3287 * @throws DAOException
3288 */
3289 public int deleteByPrimaryKey(Connection conn, Object objectMappingKey,
3290 Object primaryKey) throws PersistenceException, DAOException;
3291
3292 /***
3293 * Deletes the records from the database coresponding to the given primary
3294 * keys, according to the object mapping stored or generated by the given
3295 * object mapping key. This method uses JDBC batch updates to do the job,
3296 * meaning the delete statements are batched up and sent to the database in
3297 * one go.
3298 *
3299 * <br/><br/>A connection to the database will be obtained from the
3300 * getConnection() method of this instance.
3301 *
3302 * <br/><br/>If no object mapping is stored by the given object mapping
3303 * key, a new object mapping will be attempted generated and stored by that
3304 * object mapping key. An object mapping can only be generated automatically
3305 * if the method key is either a</code> Class</code> instance, or a <code>
3306 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
3307 * a <code>Class</code> instance set (calling ObjectMappingKey's
3308 * setObjectClass(Class theClass) method).
3309 *
3310 * <br/><br/>The <code>Class</code> instance should be the class of the
3311 * objects to be deleted, meaning if you want to delete objects of class
3312 * <code>Employee</code> the <code>Class</code> instance should be that
3313 * found at <code>Employee.class</code>.
3314 *
3315 * <br/><br/>The SQL needed to delete the record will be generated
3316 * automatically based on the object mapping, and executed using a <code>
3317 * PreparedStatement</code>. The SQL string contains one or more "?"
3318 * characters for the primary key value and will thus be cached for later
3319 * use to avoid the SQL generation overhead.
3320 *
3321 * @param objectMappingKey
3322 * The object mapping key by which the object mapping to be used
3323 * is stored in the object mapping cache, in the persistence
3324 * configuration used by this instance of the DAO class.
3325 * @param primaryKeys
3326 * The collection containing the primary keys of the records to
3327 * be deleted.
3328 * @return The number of records affected by this delete action, as returned
3329 * by <code>PreparedStatement.executeUpdate()</code>.
3330 * @throws PersistenceException
3331 * If anything goes wrong during the delete, if no persistence
3332 * configuration is set, if the persistence configuration
3333 * contains no object writer, or if no object mapping could be
3334 * found nor generated from the given object mapping key.
3335 */
3336 public int[] deleteBatchByPrimaryKeys(Object objectMappingKey,
3337 Collection primaryKeys) throws PersistenceException, DAOException;
3338
3339 /***
3340 * Deletes the records from the database coresponding to the given primary
3341 * keys, according to the object mapping stored or generated by the given
3342 * object mapping key. This method uses JDBC batch updates to do the job,
3343 * meaning the delete statements are batched up and sent to the database in
3344 * one go.
3345 *
3346 * <br/><br/>A connection to the database will be obtained from the
3347 * getConnection() method of this instance.
3348 *
3349 * <br/><br/>If no object mapping is stored by the given object mapping
3350 * key, a new object mapping will be attempted generated and stored by that
3351 * object mapping key. An object mapping can only be generated automatically
3352 * if the method key is either a</code> Class</code> instance, or a <code>
3353 * com.jenkov.mrpersister.impl.method.ObjectMappingKey</code> instance with
3354 * a <code>Class</code> instance set (calling ObjectMappingKey's
3355 * setObjectClass(Class theClass) method).
3356 *
3357 * <br/><br/>The <code>Class</code> instance should be the class of the
3358 * objects to be deleted, meaning if you want to delete objects of class
3359 * <code>Employee</code> the <code>Class</code> instance should be that
3360 * found at <code>Employee.class</code>.
3361 *
3362 * <br/><br/>The SQL needed to delete the record will be generated
3363 * automatically based on the object mapping, and executed using a <code>
3364 * PreparedStatement</code>. The SQL string contains one or more "?"
3365 * characters for the primary key value and will thus be cached for later
3366 * use to avoid the SQL generation overhead.
3367 *
3368 * @param conn
3369 * JDBC Connection
3370 * @param objectMappingKey
3371 * The object mapping key by which the object mapping to be used
3372 * is stored in the object mapping cache, in the persistence
3373 * configuration used by this instance of the DAO class.
3374 * @param primaryKeys
3375 * The collection containing the primary keys of the records to
3376 * be deleted.
3377 * @return The number of records affected by this delete action, as returned
3378 * by <code>PreparedStatement.executeUpdate()</code>.
3379 * @throws PersistenceException
3380 * If anything goes wrong during the delete, if no persistence
3381 * configuration is set, if the persistence configuration
3382 * contains no object writer, or if no object mapping could be
3383 * found nor generated from the given object mapping key.
3384 * @exception DAOException
3385 */
3386 public int[] deleteBatchByPrimaryKeys(Connection conn,
3387 Object objectMappingKey, Collection primaryKeys)
3388 throws PersistenceException, DAOException;
3389
3390 /***
3391 * Executes the given SQL update. Creates a <code>Statement</code> using
3392 * the <code>Connection</code> stored inside this GenericDao instance,
3393 * then executes the SQL update using that <code>Statement</code>
3394 * instance.
3395 *
3396 * @param sql
3397 * The SQL udpate to execute.
3398 * @return The number of records affected by the update, as returned by
3399 * <code>Statement.executeUpdate(sql)</code>.
3400 * @throws PersistenceException
3401 * If a Statement cannot be created, or an error occurs when
3402 * attempting to execute the update.
3403 * @throws DAOException
3404 */
3405 public int executeUpdate(String sql) throws PersistenceException,
3406 DAOException;
3407
3408 /***
3409 * Executes the given SQL update. Creates a <code>Statement</code> using
3410 * the <code>Connection</code> stored inside this GenericDao instance,
3411 * then executes the SQL update using that <code>Statement</code>
3412 * instance.
3413 *
3414 * @param conn
3415 * @param sql
3416 * The SQL udpate to execute.
3417 * @return The number of records affected by the update, as returned by
3418 * <code>Statement.executeUpdate(sql)</code>.
3419 * @throws PersistenceException
3420 * If a Statement cannot be created, or an error occurs when
3421 * attempting to execute the update.
3422 * @throws DAOException
3423 */
3424 public int executeUpdate(Connection conn, String sql)
3425 throws PersistenceException, DAOException;
3426
3427 /***
3428 * Executes the given SQL update. Creates a <code>PreparedStatement</code>
3429 * using the <code>Connection</code> stored inside this GenericDao
3430 * instance, then executes the SQL update using that
3431 * <code>PreparedStatement</code> instance. The parameters are inserted
3432 * into the <code>PreparedStatement</code> instance in the sequence they
3433 * occur in the <code>Iterator</code> returned by the parameter
3434 * collection. In most cases it is easiest to use a list as the collection.
3435 *
3436 * @param sql
3437 * The SQL udpate to execute.
3438 * @param parameters
3439 * The parameters to be inserted into the
3440 * <code>PreparedStatement</code>
3441 * @return The number of records affected by the update, as returned by
3442 * <code>PreparedStatement.executeUpdate(sql)</code>.
3443 * @throws PersistenceException
3444 * If a <code>PreparedStatement</code> cannot be created, or
3445 * an error occurs when attempting to execute the update.
3446 */
3447 public int executeUpdate(String sql, Collection parameters)
3448 throws PersistenceException, DAOException;;
3449
3450 /***
3451 * Executes the given SQL update. Creates a <code>PreparedStatement</code>
3452 * using the <code>Connection</code> stored inside this GenericDao
3453 * instance, then executes the SQL update using that
3454 * <code>PreparedStatement</code> instance. The parameters are inserted
3455 * into the <code>PreparedStatement</code> instance in the sequence they
3456 * occur in the <code>Iterator</code> returned by the parameter
3457 * collection. In most cases it is easiest to use a list as the collection.
3458 *
3459 * @param conn
3460 * JDBC Connection.
3461 * @param sql
3462 * The SQL udpate to execute.
3463 * @param parameters
3464 * The parameters to be inserted into the
3465 * <code>PreparedStatement</code>
3466 * @return The number of records affected by the update, as returned by
3467 * <code>PreparedStatement.executeUpdate(sql)</code>.
3468 * @throws PersistenceException
3469 * If a <code>PreparedStatement</code> cannot be created, or
3470 * an error occurs when attempting to execute the update.
3471 * @throws DAOException
3472 */
3473 public int executeUpdate(Connection conn, String sql, Collection parameters)
3474 throws PersistenceException, DAOException;
3475
3476 /***
3477 * Executes the given SQL update. Creates a <code>PreparedStatement</code>
3478 * using the <code>Connection</code> stored inside this GenericDao
3479 * instance, then executes the SQL update using that
3480 * <code>PreparedStatement</code> instance. The parameters are inserted
3481 * into the <code>PreparedStatement</code> instance in the sequence they
3482 * occur in the parameter array.
3483 *
3484 * @param sql
3485 * The SQL udpate to execute.
3486 * @param parameters
3487 * The parameters to be inserted into the
3488 * <code>PreparedStatement</code>
3489 * @return The number of records affected by the update, as returned by
3490 * <code>PreparedStatement.executeUpdate(sql)</code>.
3491 * @throws PersistenceException
3492 * If a <code>PreparedStatement</code> cannot be created, or
3493 * an error occurs when attempting to execute the update.
3494 */
3495 public int executeUpdate(String sql, Object[] parameters)
3496 throws PersistenceException, DAOException;
3497
3498 /***
3499 * Executes the given SQL update. Creates a <code>PreparedStatement</code>
3500 * using the <code>Connection</code> stored inside this GenericDao
3501 * instance, then executes the SQL update using that
3502 * <code>PreparedStatement</code> instance. The parameters are inserted
3503 * into the <code>PreparedStatement</code> instance in the sequence they
3504 * occur in the parameter array.
3505 *
3506 * @param conn
3507 * JDBC Connection.
3508 * @param sql
3509 * The SQL udpate to execute.
3510 * @param parameters
3511 * The parameters to be inserted into the
3512 * <code>PreparedStatement</code>
3513 * @return The number of records affected by the update, as returned by
3514 * <code>PreparedStatement.executeUpdate(sql)</code>.
3515 * @throws PersistenceException
3516 * If a <code>PreparedStatement</code> cannot be created, or
3517 * an error occurs when attempting to execute the update.
3518 * @throws DAOException.
3519 */
3520 public int executeUpdate(Connection conn, String sql, Object[] parameters)
3521 throws PersistenceException, DAOException;
3522
3523 }