BankAndCustomer
Lade ...
Suche ...
Keine Treffer
glo::TOndemand< T > Template-Klassenreferenz

Referenz (als Attribut) eines persistenten Objekte auf ein anderes persistentes Objekt in der Datenbank. Mehr ...

#include <GloTOndemand.h>

Klassendiagramm für glo::TOndemand< T >:
Zusammengehörigkeiten von glo::TOndemand< T >:

Öffentliche Methoden

 TOndemand ()
 
 TOndemand (const ObjID &rObjID)
 
 TOndemand (Base &rBase)
 
 TOndemand (unsigned long ulDatabaseID)
 
 TOndemand (const ObjID &rObjID, Base &rBase)
 
 TOndemand (const ObjID &rObjID, unsigned long ulDatabaseID)
 
 TOndemand (const TOndemand &rT)
 
virtual ~TOndemand ()
 
int set (const T *pObj)
 
int set (const T &rObj)
 
int set (const std::shared_ptr< T > &spObj)
 
int get (T *&prObj)
 
int get (std::shared_ptr< T > &rRetVal)
 
virtual int setReference (const ObjID &rObjID) override
 
TOndemand< T > & operator= (const TOndemand &rT)
 Zuweisungsoperator.
 
TOndemand< T > & operator= (const Reference &rT)
 Zuweisungsoperator.
 
bool operator== (const TOndemand &rT) const
 Vergleichsoperator.
 
bool operator!= (const TOndemand &rT) const
 Vergleichsoperator.
 
- Öffentliche Methoden geerbt von glo::Reference
 Reference ()
 
 Reference (const ObjID &rObjID)
 
 Reference (Base &rBase)
 
 Reference (unsigned long ulDatabaseID)
 
 Reference (const ObjID &rObjID, Base &rBase)
 
 Reference (const ObjID &rObjID, unsigned long ulDatabaseID)
 
 Reference (const Reference &rT)
 
virtual ~Reference ()
 
virtual int setBase (Base *pBase) override
 
virtual BasegetBase () const override
 
virtual int getTypeAsString (std::string &rsTypeName) override
 
bool isNULL () const
 
void setNULL ()
 
ObjID getObjID () const
 
const ObjIDgetObjIDAsPointer () const
 
int setReference (const BasePersistent *pObj)
 
int setReference (const BasePersistent &rObj)
 
int getReference (BasePersistent *&prRetVal)
 
int getReference (std::shared_ptr< BasePersistent > &sprRetVal)
 
virtual int deleteInBase (EnDeepMode eDeepMode=DM_SHALLOW)
 
virtual int lock (EnLockMode eLockMode=LK_DELETEvWRITE, EnDeepMode eDeepMode=DM_SHALLOW) const
 
virtual int lock (const LockSpecification &rLockSpecification) const
 
virtual int unlock (EnLockMode eLockMode=LK_DELETEvWRITE, EnDeepMode eDeepMode=DM_SHALLOW) const
 
virtual int unlock (const LockSpecification &rLockSpecification) const
 
virtual int isLocked (EnLockMode eLockMode=LK_DELETEvWRITE, EnDeepMode eDeepMode=DM_SHALLOW) const
 
virtual int isLocked (const LockSpecification &rLockSpecification) const
 
virtual int isPossible (bool bRead, bool bWrite, bool bDelete, EnDeepMode eDeepMode=DM_SHALLOW) const
 
virtual int isPossible (const LockPossibleSpecification &rLockPossibleSpec, EnDeepMode eDeepMode=DM_SHALLOW) const
 
virtual int setWatch (TdWatchNotifyMode ulWatchMode, EnDeepMode eDeepMode, CallBack *pCallBack=0) const
 
virtual int setWatch (const WatchSpecification &rWatchSpec) const
 
virtual int unsetWatch (TdWatchNotifyMode ulWatchMode, EnDeepMode eDeepMode, CallBack *pCallBack) const
 
virtual int unsetWatch (const WatchSpecification &rWatchSpec) const
 
Referenceoperator= (const Reference &rT)
 
bool operator== (const Reference &rT) const
 Vergleichsoperator.
 
bool operator!= (const Reference &rT) const
 Vergleichsoperator.
 
- Öffentliche Methoden geerbt von glo::CallBack
 CallBack ()
 
virtual ~CallBack ()
 
virtual void notify (NotifyNote &rNote)
 
CallBackoperator= (const CallBack &rT)
 
bool operator== (const CallBack &rT) const
 Vergleichsoperator, es werden alle Attribute verglichen.
 
bool operator!= (const CallBack &rT) const
 Vergleichsoperator, es werden alle Attribute verglichen.
 

Weitere Geerbte Elemente

- Öffentliche Attribute geerbt von glo::CallBack
std::string m_strDebugInfo
 
- Geschützte Methoden geerbt von glo::CallBack
 CallBack (const CallBack &rT)
 
void init ()
 
void deinit ()
 

Ausführliche Beschreibung

template<class T>
class glo::TOndemand< T >

Referenz (als Attribut) eines persistenten Objekte auf ein anderes persistentes Objekt in der Datenbank.

Im Gegensatz zu einem Zeiger auf ein persistentes Objekt (bei dem das referenzierte Objekt 'mitgeladen' wird), ist TOndemand eine Referenz über die Objekt-ID auf ein persistentes Objekt; es wird also nicht mit dem referenzierenden Objekt aus der Datenbank geladen, sondern kann bei Bedarf 'nachgeladen' werden.

Sinnvoller Einsatz ist immer dann gegeben, wenn ein Objekt ein nicht im jeden Fall notwendig im Speicher verfügbares 'großes' Objekt referenziert.

Z.B. bei einer Bilderverwaltung könnte ein Bildobjekt textuelle Informationen, ein Thumpnail und ein 'große' Bild enthalten. Für einige Ansichten ist es evtl. aus Geschwindigkeitsgründen gar nicht sinnvoll bei jeder Anzeige das 'große' Bild mit aus der Datenbank zu holen. Da wäre dann eine Referenz über ein TOndemand sinnvoll.

Wenn Objekte einer Objektdatenbank Objekte in einer anderen Objektdatenbank referenzieren sollen, ist dieses nur mit glo::TOndemand möglich.

Autor
Helmut Jakoby

Beschreibung der Konstruktoren und Destruktoren

◆ TOndemand() [1/7]

template<class T >
glo::TOndemand< T >::TOndemand ( )

Standard-Konstruktor.

◆ TOndemand() [2/7]

template<class T >
glo::TOndemand< T >::TOndemand ( const ObjID & rObjID)

Konstruktor mit Parameterübergabe.

Parameter
[in]rObjIDEs kann schon bei der Erstellung die Objekt-ID des zu referenzierenden Objekts mitgegeben werden.

◆ TOndemand() [3/7]

template<class T >
glo::TOndemand< T >::TOndemand ( Base & rBase)

Konstruktor mit Parameterübergabe.

Parameter
[in]rBaseEs kann schon bei der Erstellung die maßgebliche Datenbank mitgegeben werden.

◆ TOndemand() [4/7]

template<class T >
glo::TOndemand< T >::TOndemand ( unsigned long ulDatabaseID)

Konstruktor mit Parameterübergabe.

Parameter
[in]ulDatabaseIDEs kann schon bei der Erstellung die maßgebliche Datenbank ID mitgegeben werden.

◆ TOndemand() [5/7]

template<class T >
glo::TOndemand< T >::TOndemand ( const ObjID & rObjID,
Base & rBase )

Konstruktor mit Parameterübergabe.

Parameter
[in]rObjIDEs kann schon bei der Erstellung die Objekt-ID des zu referenzierenden Objekts und...
[in]rBase...die maßgebliche Datenbank mitgegeben werden.

◆ TOndemand() [6/7]

template<class T >
glo::TOndemand< T >::TOndemand ( const ObjID & rObjID,
unsigned long ulDatabaseID )

Konstruktor mit Parameterübergabe.

Parameter
[in]rObjIDEs kann schon bei der Erstellung die Objekt-ID des zu referenzierenden Objekts und...
[in]ulDatabaseID...die maßgebliche Datenbank ID mitgegeben werden.

◆ TOndemand() [7/7]

template<class T >
glo::TOndemand< T >::TOndemand ( const TOndemand< T > & rT)

Copy-Konstruktor.

Parameter
[in]rTVon diesem Objekt werden die Daten übernommen.

◆ ~TOndemand()

template<class T >
glo::TOndemand< T >::~TOndemand ( )
virtual

Destruktor.

Dokumentation der Elementfunktionen

◆ get() [1/2]

template<class T >
int glo::TOndemand< T >::get ( std::shared_ptr< T > & rRetVal)

Liefert das referenzierte Objekt aus der Datenbank (bzw. aus dem Speicher wenn schon geladen) in einem std::shared_ptr.

Parameter
[in,out]rRetValDas referenzierte Objekt in einem std::shared_ptr.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Wenn ein referenziertes Objekt nicht in der Datenbank existiert, wird der Fehler glo::ERR_NO_INDEX zurückgegeben.

◆ get() [2/2]

template<class T >
int glo::TOndemand< T >::get ( T *& prObj)

Liefert das referenzierte Objekt aus der Datenbank (bzw. aus dem Speicher wenn schon geladen).

Parameter
[in,out]prObjDie Zeigerreferenz auf das referenzierte Objekt.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Wenn ein referenziertes Objekt nicht in der Datenbank existiert, wird der Fehler glo::ERR_NO_INDEX zurückgegeben.
Achtung
Das gelieferte Objekt muss von der aufrufenden Instanz mittels BasePersistent::forget() aus dem Speicher entfernt werden.
Zu beachten
Es wird empfohlen, wenn möglich, die Verwendung von std::shared_ptr in Betracht zu ziehen und die Methode get(std::shared_ptr<T>&) zu nutzen.

◆ operator!=()

template<class T >
bool glo::TOndemand< T >::operator!= ( const TOndemand< T > & rT) const

Vergleichsoperator.

Parameter
[in]rTDas mit diesem zu vergleichende Objekt.

◆ operator=() [1/2]

template<class T >
TOndemand< T > & glo::TOndemand< T >::operator= ( const Reference & rT)

Zuweisungsoperator.

Parameter
[in]rTVon diesem Objekt werden die Daten übernommen.

◆ operator=() [2/2]

template<class T >
TOndemand< T > & glo::TOndemand< T >::operator= ( const TOndemand< T > & rT)

Zuweisungsoperator.

Parameter
[in]rTVon diesem Objekt werden die Daten übernommen.

◆ operator==()

template<class T >
bool glo::TOndemand< T >::operator== ( const TOndemand< T > & rT) const

Vergleichsoperator.

Parameter
[in]rTDas mit diesem zu vergleichende Objekt.

◆ set() [1/3]

template<class T >
int glo::TOndemand< T >::set ( const std::shared_ptr< T > & spObj)

Übernimmt die Objekt-ID des übergeben Objekt als Referenz.

Parameter
[in]spObjDas zu referenzierende Objekt.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Zu beachten
Beide Objekte, dieses und das zu referenzierende müssen an der gleichen Datenbank angemeldet sein.

◆ set() [2/3]

template<class T >
int glo::TOndemand< T >::set ( const T & rObj)

Übernimmt die Objekt-ID des übergeben Objekt als Referenz.

Parameter
[in]rObjDas zu referenzierende Objekt.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Zu beachten
Beide Objekte, dieses und das zu referenzierende müssen an der gleichen Datenbank angemeldet sein.

◆ set() [3/3]

template<class T >
int glo::TOndemand< T >::set ( const T * pObj)

Übernimmt die Objekt-ID des übergeben Objekt als Referenz.

Parameter
[in]pObjDer Zeiger auf das zu referenzierende Objekt.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Zu beachten
Beide Objekte, dieses und das zu referenzierende müssen an der gleichen Datenbank angemeldet sein.

◆ setReference()

template<class T >
int glo::TOndemand< T >::setReference ( const ObjID & rObjID)
overridevirtual

Übernimmt die Objekt-ID als Referenz.

Parameter
[in]rObjIDDie zu referenzierende Objekt-ID.
Zu beachten
Beide Objekte, dieses und das zu referenzierende müssen an der gleichen Datenbank angemeldet sein.

Erneute Implementation von glo::Reference.


Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Datei: