ODB 基於c 的ORM對映框架嘗試 使用

2021-09-22 21:43:55 字數 2169 閱讀 6999

摘要: 2、使用 首先,需要定義乙個物件,用來和資料庫字段對應: [cce lang=」cpp」] #ifndef volume_h #define volume_h #include #include #pragma db object cl

2、使用

首先,需要定義乙個物件,用來和資料庫字段對應:

[cce lang=」cpp」]

#ifndef volume_h

#define volume_h

#include

#include

#pragma db object

class volume

unsigned long long id()

void id(unsigned long long i)

const std::string &name()

void name(const std::string &n)

const std::string &location()

void location(const std::string &l)

const std::string &cover_path()

void cover_path(const std::string &c)

int trackcount()

void trackcount(int c)

private:

friend class odb::access;

volume () {}

#pragma db id auto

unsigned long long _id;

std::string _name;

std::string _location;

std::string _cover_path;

int _trackercount;

};[/cce]

首先是引入core.hxx這個標頭檔案,包含access這個類。在類上面新增#pragma db object巨集,標識這是個資料庫物件。在主鍵上增加巨集#pragma db id auto,標識這個是主鍵,並且自增。這兩個巨集都是提供資訊給odb,用來生成最終c++**的。因為資料庫對應欄位都是私有型別,所以需要將odb::access宣告為友元。

為了方便,這裡連線資料庫都使用sqlite,因此,需要引入sqlite相關的包。建立資料庫連線(對sqlite來說,就是開啟資料庫檔案):

[cce lang=」cpp」]

std::shared_ptrsqlitedb(new odb::sqlite::database("mycppweb.db", sqlite_open_readwrite | sqlite_open_create));

[/cce]

注:這裡需要引入標頭檔案odb/sqlite/database.hxx,建立資料庫連線的第乙個引數(只針對sqlite)是資料庫檔名,後面是開啟的flag,這裡主要是提示如果資料庫檔案不存在,預設建立。另外,這裡使用了c++11的shared_ptr,g++需要新增引數-std=c++0x

插入物件:

[cce lang=」cpp」]

[/cce]

插入的時候,使用了事務,需要引入odb/transaction.hxx標頭檔案,並且儘量減少transaction的生命週期。

通過odb命令生成對應的**:

[cce lang=」bash」]

odb –database sqlite \

–hxx-suffix .hpp –ixx-suffix .ipp –cxx-suffix .cpp \

–output-dir /tmp \

–generate-query –generate-schema –schema-format embedded volume.h

[/cce]

這裡指定輸出的資料庫是sqlite,建立schema的語句嵌入到**裡面。

執行之後,會生成volume-odb.hpp、volume-odb.cpp和volume-odb.ipp三個檔案。檢視volume-odb.cpp就會發現,裡面包含了volume.h中指定的類和資料庫表的關係。如果希望通過**來建立資料庫(貌似需要自己來判斷是否已經存在,否則第二次執行又會重新建立表,導致資料丟失),可以通過:

[cce lang=」cpp」]

[/cce]

odb的查詢,還沒有去嘗試,具體文件在

C 的ORM 開源框架

odb 是乙個開源的,支援多平台,支援多資料庫的 c 的 orm 框架,可將 c 物件資料庫表對映,進行輕鬆的資料庫查詢和操作。使用odb進行物件持久化具有以下優點 示例 view source print?01odb sqlite database db people.db 02 03person...

C 中流行的ORM框架

net c 主流orm總攬sqlsugar sqlsugar是國人開發者開發的一款基於.net的orm框架,是可以執行在.net 4.net core的高效能 輕量級 orm框架,眾多.net框架中最容易使用的資料庫訪問技術。特點 開源 免費 國內開發者開發 維護 支援.net core 支援主流資...

C 實現的ORM對映工具類介紹 三

dbmanager類 class dbmanager include dbmanager.hpp dbmanager dbmanager pdbmanager null dbmanager dbmanager for int i 0 iclassnamevector.size j if pmodel...