
Wt 3.3.1文档翻译:Wt::Dbo::ptr< C >类模板参考,Wt::Dbo::ptr< C > Class Template Reference
这是一个智能指针,指向一个数据库对象。
这个智能指针类,实现了一个指向数据库对象的带引用计数的共享指针,并且还会跟踪对象的内存中副本和数据库中副本之间的同步状态。当妳要引用一个数据库对象时,应当永远使用这个指针类。
不像传统的C++数据结构,那些被映射到数据库表的类之间并没有清晰的从属关系。因此,传统的基于从属关系的内存分配/释放手段对于数据库类来说并不十分好用。
一个指针可能指向一个瞬时(transient)对象或指向一个已持久化的(persisted)对象。对于一个已持久化的对象,在数据库中有它的一个相应的副本,而一个瞬时对象只存在于内存中。要将一个新对象持久化,就使用Session::add()。要将一个已持久化的对象变成瞬时状态的,则使用remove()。
与传统的智能指针不同的是,这个指针在默认情况下只允许以只读方式访问到底层的对象。要想修改该对象,妳应当显式地使用modify()。这会将底层的对象标记为脏的(dirty),进而将它加入到等待与数据库进行同步的对象队列中。
这个指针类提供了一系列的方法,可用于处理对应对象的持久化状态:
•. id(): 返回该对象在数据库中的编号(id)
•. flush(): 强制将该对象同步到数据库中
•. remove(): 从底层数据库中删除该对象
•. reread(): 从数据库中重新读入该对象的副本
•. purge(): 清除掉(purges)某个不脏(non-dirty)的对象的瞬时(transient)副本。
|
Wt::Dbo::ptr< C >::ptr |
( |
C * |
obj = 0) |
创建一个新的指针。
如果 obj 不为0,则,这个指针会指向当前新创建的未持久化的对象。使用 Session::add()来将新创建的对象持久化。
隐形眼镜
HxLauncher: Launch Android applications by voice commands