View Javadoc

1   
2   package org.weda.store;
3   
4   import java.io.InputStream;
5   import java.io.Serializable;
6   import java.sql.Blob;
7   import java.util.Iterator;
8   import java.util.List;
9   
10  /**Сервис позволяющий сохранять и востанавливать
11   * состояние доменных объектов
12   *
13   * @author Mikhail Titov
14   */
15  public interface ObjectStore {
16      /**Маркер позволяющий определить, где в QL запросе вставить выражения 
17       * фильтра (QueryFilter).
18       */
19      public final static String FILTER_INSERT_POSITION_MARKER = "{#}";
20      
21      //public Session getSession() throws HibernateException;
22      /**Метод начинает новую транзакцию или если транзация уже начата 
23       * пытается сделать точку сохранения (save point) если jdbc драйвер
24       * поддерживает данную функциональность. Каждый успешный 
25       * вызов метода увеличивает счетчик тразакций на едниницу.
26       * @see #commit()
27       * @see #rollback()
28       */ 
29      public void beginTransaction() throws ObjectStoreException;
30      /**Метод фиксирует транзацию если значение счетчика транзакций равно одному
31       * иначе удаляет последнюю точку сохранения (save point)
32       * если jdbc драйвер поддерживает данную функциональность
33       * Каждый вызов уменьшает счетчик транзакций на единицу.
34       * @see #beginTransaction()
35       * @see #rollback()
36       */
37      public void commit() throws ObjectStoreException;
38      /**Метод отменяет транзацию если значение счетчика транзакций равно одному
39       * иначе происходит откат к последней точке сохранения (save point)
40       * если jdbc драйвер поддерживает данную функциональность.
41       * Каждый вызов уменьшает счетчик транзакций на единицу.
42       * @see #beginTransaction()
43       * @see #rollback()
44       */
45      public void rollback() throws ObjectStoreException;
46      /**Метод блокиреут объект так, что только сессия в которой был вызван метод
47       * будет иметь эксклюзивные права на изменение свойств объекта.
48       */
49      public void lock(Object obj) throws ObjectStoreException;
50      /**Метод обновляет информацию об объекте.
51       */
52      public void refresh(Object obj) throws ObjectStoreException;
53      /**Метод возвращает уникальный идентификатор объекта.
54       */
55      public Serializable getObjectId(Object obj) throws ObjectStoreException;
56      /**Метод "заставлет" передать изменения накопленные в хранилище низлежащему
57       * механизму хранения (например БД)
58       */
59      public void flushUpdates() throws ObjectStoreException;
60      /**Не используется
61       */
62      public void setAutoCommit(boolean autoCommit);
63      public boolean isAutoCommit();
64      /**Метод вернет <code>true</code> если значение свойства установлено
65       * в <code>null</code>.
66       */
67      public boolean isPropertyValueNull(Object obj, String propertyName) 
68          throws ObjectStoreException;
69      /**Метод сохраняет объект в хранилище.
70       */
71      public void save(Object obj) throws ObjectStoreException;
72      /**Метод загружает объект из хранилища.
73       */
74      public Object load(Class clazz, Serializable id) 
75          throws ObjectStoreException;
76      /**Метод удаляет объект из хранилища.
77       */
78      public void delete(Object obj) throws ObjectStoreException;
79      /**Метод удаляет все объекты заданного типа.
80       */
81      public void deleteAll(Class objectClass) throws ObjectStoreException;
82      /**Метод возвращает полный ответ на заданный запрос и удовлетворяющий
83       * фильтру, присутствующему в источнике объектов. 
84       * В качестве результата возвращается список объектов,
85       * где каждый элемент списка это строка, а каждый элемент в массиве объектов
86       * это объекты из списка <code>select</code> запроса.
87       */
88      public List<Object[]> queryAllRows(ObjectSource dataSource)
89          throws ObjectStoreException;
90      public Iterator query(ObjectSource dataSource);
91      /**Метод очищает кеш занимаемый текущей сессией.
92       */
93      public void reset();
94      /**Метод создает <code>Blob</code>
95       */
96      public Blob createBlob(InputStream inStream) throws ObjectStoreException;
97  }