用过Java的都知道SSH框架,特别对于数据库开发,Java领域有无数的ORM框架,供数据持久层调用,如Hibernate,iBatis(现在改名叫MyBatis),TopLink,JDO,JPA……非常方便实用。
    用过C#的同学们也都知道通过CodeSmith软件,生成微软的PetShop分层模式,达到数据持久层的代码,也非常方便。
    那么我们用C++的怎么办,我们也是面向对象编程,在工作中也有数据库需要管理。我们需要完全手工去写那些重复性的代码吗?特别我现在采用的是Qt这种非常标准的C++语言。很希望能快速的开发软件,把重心放在软件的架构、控制系统、通信系统、文件传输系统、以及图像处理上。不想在数据库上有过多的累赘。那么我们也需要一个轻量级的ORM。
 
    目前C++中现存的ORM主流库主要为以下几个:

QxQrm、Wt::Dbo依赖于特定的框架,而LiteSQL和ODB不需要特定框架支持,所以主要考虑这两个工具。
 
Boost支持
LiteSQL:不支持
ODB:支持
需求分析:本系统可能会用到boost库
 
技术支持
LiteSQL:技术支持一般,跟进开发很慢
ODB:技术支持很好,更新快,用户较多
 
具体特点分析
LiteSQL:
1.所有支持的库都写到一个动态链接库
2.生成数据库嵌入到C++中
3.使用XML文件
ODB:
1.自动生成数据库支持的代码
2.根据类的定义,编译生成数据库表单
3.支持面向对象的持久化模型和数据库API(提供简单易用的数据库操作方法)
4.使用c++头文件
 
总结
Litesql是一个高耦合性的工具,自动化程度高,但是不利于系统调试,还有不支持boost库。
ODB 技术支持好,支持boost库,易于开发调试。
综上所述,ODB最适合用来开发。我们的Lynn系统将使用ODB作为与数据打交道的类库,下一篇即将更新ODB具体安装使用实例。

C++的ORM工具比较的更多相关文章

  1. 对.net orm工具Dapper在多数据库方面的优化

    Dapper是近2年异军突起的新ORM工具,它有ado.net般的高性能又有反射映射实体的灵活性,非常适合喜欢原生sql的程序员使用,而且它源码很小,十分轻便.我写本博客的目的不是为了介绍Dapper ...

  2. 基于Dapper二次封装了一个易用的ORM工具类:SqlDapperUtil

    基于Dapper二次封装了一个易用的ORM工具类:SqlDapperUtil,把日常能用到的各种CRUD都进行了简化封装,让普通程序员只需关注业务即可,因为非常简单,故直接贴源代码,大家若需使用可以直 ...

  3. python操作三大主流数据库(3)python操作mysql③python操作mysql的orm工具sqlaichemy安装配置和使用

    python操作mysql③python操作mysql的orm工具sqlaichemy安装配置和使用 手册地址: http://docs.sqlalchemy.org/en/rel_1_1/orm/i ...

  4. 轻量级ORM工具Simple.Data

    今天推举的这篇文章,本意不是要推举文章的内容,而是据此介绍一下Simple.Data这个很有意思的类ORM工具. 现在大家在.NET开发中如果需要进行数据访问,那么基本都会使用一些ORM工具,比如微软 ...

  5. orm工具的基本思想

    orm工具的基本思想无论是用过的hibernate,mybatis,你都可以法相他们有一个共同点:1. 从配置文件(通常是XML配置文件中)得到 sessionfactory.2. 由sessionf ...

  6. 在简单的JDBC程序中使用ORM工具

    本文来自[优锐课]——抽丝剥茧,细说架构那些事. ORM(对象关系映射)是用于数据库编程的出色工具.只需一点经验和Java注释的强大功能,我们就可以相对轻松地构建复杂的数据库系统并利用生产力.关系数据 ...

  7. .NET ORM工具Pax实战

    Pax是微软的一个ORM读写工具,比NHibernate更好用.可以在项目中用Nuget下载并安装. 可以看到引用中多了 在App.config里设置配置文件如下 <?xml version=& ...

  8. 简单ORM工具的设计和编写,自己项目中曾经用过的

    http://www.cnblogs.com/szp1118/archive/2011/03/30/ORM.html 在之前的一个项目中自己编写了一个简单的ORM小工具,这次重新整理和重构了一下代码, ...

  9. Mysql ORM工具--MicrobeORM.Mysql开源咯

    MicrobeORM.Mysql 补充:为啥批批量比官方的ADO.NET还快,原因是这俩货 System.EnterpriseServices.dllSystem.EnterpriseServices ...

随机推荐

  1. atitit.api设计 方法 指南 手册 v2 q929.docx

    atitit.api设计 方法 指南 手册 v2 q929.docx atitit.api设计原则与方法 1. 归一化(锤子钉子理论)1 1.1. 链式方法2 1.2. 规则5:建立返回值类型2 1. ...

  2. paip.提升效率---filter map reduce 的java 函数式编程实现

    #paip.提升效率---filter map reduce 的java 函数式编程实现 ======================================================= ...

  3. python中的metaclass

    首先看下面的代码: # coding: utf-8 class Test(object): pass print Test.__class__ # type print Test.__base__ # ...

  4. 从头学Android之Android布局管理:LinerLayout线性布局

    LinerLayout线性布局: 这种布局方式是指在这个里面的控件元素显线性,我们可以通过setOrientation(int orientation)来指定线性布局的显示方式,其值有:HORIZON ...

  5. RFID 读写器 Reader Writer Cloner

    RFID读写器的工作原理 RFID的数据采集以读写器为主导,RFID读写器是一种通过无线通信,实现对标签识别和内存数据的读出和写入操作的装置. 读写器又称为阅读器或读头(Reader).查询器(Int ...

  6. Javascript 严格模式

    简介 严格模式是一种将更好的错误检查引入代码中的方法. 在使用严格模式时,你无法使用隐式声明的变量.将值赋给只读属性或将属性添加到不可扩展的对象等. 声明严格模式 可以通过在文件.程序或函数的开头添加 ...

  7. Android 5.0 双卡信息管理分析

    首先,如前面的博文所讲的,Android5.0开始支持双卡了.另外,对于双卡的卡信息的管理,也有了实现,尽管还不是完全彻底完整,如卡的slot id, display name,iccid,color ...

  8. java代写

    Computer Science, Claremont McKenna CollegeCS51.2 - Introduction to Computer Science, Fall 2014Probl ...

  9. RabbitMQ学习笔记3-使用topic交换器

    topic的路由规则里使用[.]号分隔单词,使用[*]号匹配1个单词,使用[#]匹配多个.和多个*. 在下面的例子中: logger.*可以匹配logger.error和logger.warning, ...

  10. [iOS Xcode8]上传AppStore 无法构建版本 没有➕号

    最近iOS10出来了 Xcode也跟着升级到了8 想着App做个更新 于是修改好了代码打算上传新包 ,无奈总是发现构建不了新版本 经过各种蛋疼的查找.我列一下我的经验 1.如果是收费的App,那么是要 ...