01: /*
02: $Header: /cvsroot/xorm/xorm/src/org/xorm/datastore/DatastoreDriver.java,v 1.18 2002/12/17 17:50:53 wbiggs Exp $
03:
04: This file is part of XORM.
05:
06: XORM is free software; you can redistribute it and/or modify
07: it under the terms of the GNU General Public License as published by
08: the Free Software Foundation; either version 2 of the License, or
09: (at your option) any later version.
10:
11: XORM is distributed in the hope that it will be useful,
12: but WITHOUT ANY WARRANTY; without even the implied warranty of
13: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14: GNU General Public License for more details.
15:
16: You should have received a copy of the GNU General Public License
17: along with XORM; if not, write to the Free Software
18: Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19: */
20: package org.xorm.datastore;
21:
22: import java.util.Collection;
23: import java.util.Set;
24:
25: import org.xorm.query.Selector;
26:
27: /**
28: * There is one datastore driver per Transaction.
29: */
30: public interface DatastoreDriver {
31: // Transaction methods
32: public void begin(boolean readOnly) throws DriverException;
33:
34: public void commit() throws DriverException;
35:
36: public void rollback() throws DriverException;
37:
38: // CRUD methods
39:
40: /**
41: * Creates (inserts) a new row in the datastore.
42: * If the table is configured for autoincrement or sequence
43: * ID generation, the object ID is generated using that method
44: * before the row is inserted.
45: */
46: public void create(Row row) throws DriverException;
47:
48: /**
49: * Updates a given row so that the datastore's values are in sync
50: * with those in the object.
51: */
52: public void update(Row row) throws DriverException;
53:
54: /**
55: * Permanently deletes a single row from the datastore.
56: */
57: public void delete(Row row) throws DriverException;
58:
59: // Query methods
60:
61: /**
62: * Selects from (queries) the datastore for rows matching the
63: * specified query conditions.
64: *
65: * @param selector the root of the parse tree representing the query
66: * @param extraRows a non-null set to which additional objects read
67: * from the datastore can be added, as advised by fetch group
68: * information and optimization choices.
69: * @return a collection of Row objects matching the selection criteria.
70: */
71: public Collection select(Selector selector, Set extraRows)
72: throws DriverException;
73:
74: /**
75: * Returns the size of the results that would be returned by the query.
76: * A naive implementation would be to return select(selector, ...).size().
77: * However, this allows datastores that provide a native count feature
78: * to use far less network and memory resources.
79: */
80: public int count(Selector selector) throws DriverException;
81:
82: }
|