001: package com.completex.objective.components.persistency;
002:
003: import com.completex.objective.components.persistency.transact.TransactionManagerAware;
004: import com.completex.objective.components.persistency.mapper.Mapper;
005: import com.completex.objective.components.persistency.mapper.AdHocPoBeanConverter;
006:
007: /**
008: * @author Gennady Krizhevsky
009: */
010: public interface MappingPersistency extends Persistency0,
011: SelectPersistency, TransactionManagerAware {
012: /**
013: * Updates bean object in the database.
014: * If bean is not instance of <t>PersistentObject</t> then the method checks if the mapped
015: * <t>PersistentObject</t> is in the current thread session. If it is not the load is performed,
016: * the returned <t>PersistentObject</t> is then merged with the incomming one and the differences
017: * are stored in the database. Use <t>update(Object bean, LifeCycleController controller)</t> method
018: * if you need controller to force retrieval of all necessary lazily loaded fields.
019: * <br>
020: * The method returns the same instance of a bean if its the <t>PersistentObject</t> it is mapped to is
021: * in the current thread session and a new instance if it is not.
022: *
023: *
024: * @param bean bean to update
025: * @return the same instance of a bean if its the <t>PersistentObject</t> it is mapped to is
026: * in the current thread session and a new intance if it is not.
027: * @throws OdalPersistencyException
028: */
029: Object update(Object bean) throws OdalPersistencyException;
030:
031: /**
032: * Updates bean object in the database.
033: * If bean is not instance of <t>PersistentObject</t> then the method checks if the mapped
034: * <t>PersistentObject</t> is in the current thread session. If it is not the load is performed,
035: * the returned <t>PersistentObject</t> is then merged with the incomming one and the differences
036: * are stored in the database. Use controller to force (with corresponding getters) retrieval
037: * of all necessary lazily loaded fields.
038: * <br>
039: * The method returns the same instance of a bean if its the <t>PersistentObject</t> it is mapped to is
040: * in the current thread session and a new instance if it is not.
041: *
042: *
043: * @param bean bean to update
044: * @param controller life cycle controller
045: * @return the same instance of a bean if its the <t>PersistentObject</t> it is mapped to is
046: * in the current thread session and a new intance if it is not.
047: * @throws OdalPersistencyException
048: */
049: Object update(Object bean, LifeCycleController controller)
050: throws OdalPersistencyException;
051:
052: /**
053: * Inserts bean object into database
054: *
055: * @param bean
056: * @return 1 or RC_NON_DIRTY value if record is not "dirty".
057: * It should not be used for batch updates or composites
058: * @throws OdalPersistencyException
059: */
060: int insert(Object bean) throws OdalPersistencyException;
061:
062: /**
063: *
064: * @param bean
065: * @param controller
066: * @return 1 or RC_NON_DIRTY value if record is not "dirty".
067: * It should not be used for batch updates or complex objects
068: * @throws OdalPersistencyException
069: */
070: int insert(Object bean, LifeCycleController controller)
071: throws OdalPersistencyException;
072:
073: /**
074: * Deletes object from database
075: *
076: * @param bean
077: * @return number of row affected (1 or 0). Should not be used for batch updates or
078: * @throws OdalPersistencyException
079: */
080: int delete(Object bean) throws OdalPersistencyException;
081:
082: /**
083: * Deletes object from database
084: *
085: * @param bean
086: * @return number of row affected (1 or 0). Should not be used for batch updates or
087: * complex objects
088: * @throws OdalPersistencyException
089: */
090: int delete(Object bean, LifeCycleController controller)
091: throws OdalPersistencyException;
092:
093: /**
094: * Returns mapper used for this persistency
095: *
096: * @return mapper used for this persistency
097: */
098: Mapper getMapper();
099:
100: /**
101: * Returns AdHocPoBeanConverter used for this persistency
102: *
103: * @return AdHocPoBeanConverter used for this persistency
104: */
105: AdHocPoBeanConverter getAdHocPoMappingHandler();
106:
107: /**
108: * Returns underlying PO persistency
109: *
110: * @return underlying PO persistency
111: */
112: Persistency getPersistency();
113: }
|