免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6876 | 回复: 8
打印 上一主题 下一主题

C/C++有类似Java中Hibernate的数据库工具吗 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-06-14 09:33 |只看该作者 |倒序浏览
或者任何能简化数据库操作的代码包

论坛徽章:
0
2 [报告]
发表于 2012-06-14 10:13 |只看该作者
Database Template Library
SOCI

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
3 [报告]
发表于 2012-06-14 10:22 |只看该作者
本帖最后由 yulihua49 于 2012-06-14 10:38 编辑
_Rayx 发表于 2012-06-14 10:13
Database Template Library
SOCI

学习一下,我搞了一个DAU,Data Access Unit,包括SRM(Struct Relational Mapping,->ORM)部分和访问器部分。
就是仿造Hibernate写的,使用方便,效率极高。目前支持ORACLE--OCI,DB2--CLI,是否与你的SOCI类似呢?交流一下。

是这个吧:
http://soci.sourceforge.net/
但是它要写语句,DAU象Hibernate,不用写语句,只写HQL。另外它如何绑定变量?
我们的变量绑定在结构里。
见:
http://bbs.chinaunix.net/thread-3752484-1-1.html

论坛徽章:
0
4 [报告]
发表于 2012-06-14 10:33 |只看该作者
回复 3# yulihua49
    DTL的资料可以从这里http://dtemplatelib.sourceforge.net/看到。

    SOCI的资料可以在这里http://soci.sourceforge.net/看到。

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
5 [报告]
发表于 2012-06-14 10:37 |只看该作者
本帖最后由 yulihua49 于 2012-06-14 21:03 编辑
_Rayx 发表于 2012-06-14 10:33
回复 3# yulihua49
    DTL的资料可以从这里http://dtemplatelib.sourceforge.net/看到。

哈哈,DTL与我的做法一模一样。
不过他是C++我是C的:
  1. int unloadfile(T_SQL_Connect *SQL_Connect,char *tablename,FILE *ofd,
  2.                 char *where,int buflen)
  3. {
  4. char *p;
  5. DAU _DAU;
  6. int num,ret,cur;
  7. INT64 now;

  8.         ShowLog(5,"unloadfile:entry dlmt=0X%02X",dlmt&255);
  9.         ret=DAU_init(&_DAU,SQL_Connect,tablename,0,0);//对于给定的表名,生成映像模板和相应的数据结构
  10.         if(ret) {
  11.                 ShowLog(1,"unloadfile:DAU_init tabname=%s,ret=%d",tablename,ret);
  12.                 return -1;
  13.         }
  14.         now=now_usec();
  15.         ret=DAU_prepare(&_DAU,where);//生成语句,where的部分由外部提供
  16.         ShowLog(5,"unldfile:ret=%d,stmt=%s",ret,where);
  17.         if(ret) {
  18.                 ShowLog(1,"unloadfile:err=%d,%s",ret,where);
  19.                 return ret;
  20.         }
  21.         while(!DAU_next(&_DAU))) { //FETCH到DAU内部的结构
  22. //下边的这句话完成你所需的功能:
  23.                 DAU_pack(&_DAU,where);//DAU内部的结构 序列化到buffer where
  24. //形成  ....|......|....|...|的格式
  25.                 fprintf(ofd,"%s\n",where);//把where里的字符串送到网络也可以
  26.                 num+=ret;
  27.         }
  28.         DAU_free(&_DAU);
  29.         ShowLog(2,"unload %s:rows=%d,INTERVAL=%d",tablename,num,(int)(now_usec() - now));
  30.         return 0;
  31. }
复制代码
我的模板在8楼:
http://bbs.chinaunix.net/thread-3752484-1-1.html
看起来是不是很像DTL?
不知DTL什么年月的,我们这个用了好多年了。

论坛徽章:
27
处女座
日期:2016-04-18 14:00:4515-16赛季CBA联赛之福建
日期:2023-03-31 15:54:2315-16赛季CBA联赛之深圳
日期:2020-06-02 10:10:5015-16赛季CBA联赛之广夏
日期:2019-07-23 16:59:452016科比退役纪念章
日期:2019-06-26 16:59:1315-16赛季CBA联赛之天津
日期:2019-05-28 14:25:1915-16赛季CBA联赛之青岛
日期:2019-05-16 10:14:082016科比退役纪念章
日期:2019-01-11 14:44:062016科比退役纪念章
日期:2018-07-18 16:17:4015-16赛季CBA联赛之上海
日期:2017-08-22 18:18:5515-16赛季CBA联赛之江苏
日期:2017-08-04 17:00:4715-16赛季CBA联赛之佛山
日期:2017-02-20 18:21:13
6 [报告]
发表于 2012-06-14 17:23 |只看该作者
hibernate 是最为恶心的框架,有没有类似于 ibatis 的框架啊?

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
7 [报告]
发表于 2012-06-14 20:45 |只看该作者
本帖最后由 yulihua49 于 2012-06-15 15:48 编辑
evaspring 发表于 2012-06-14 17:23
hibernate 是最为恶心的框架,有没有类似于 ibatis 的框架啊?

DAU吸收了它的优点,摈弃了它的缺点,比iBatis好。
写DAU时参考了所有常见的框架。
性能比那些框架高得多。
写入速度达到每秒1-3万行读入速度高达每秒3-6万行,比hib高1个数量级。
支持存储过程和函数。
支持批量插入和返回子句(RETURNING)

ADO和iBatis要自己写语句的。DAU可以不写语句。
看前边的例子了吧?那是一个真正我们在用的程序,可以下载任意表,只需提供表名,没有任何SQL语句。
在日志文件里可以看到它生成的语句。
不写语句的好处就是可以处理任何表。

论坛徽章:
0
8 [报告]
发表于 2012-06-15 10:25 |只看该作者
有这么好吗,相关资料在哪能看到啊
回复 7# yulihua49


   

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
9 [报告]
发表于 2012-06-15 15:47 |只看该作者
zhongyj 发表于 2012-06-15 10:25
有这么好吗,相关资料在哪能看到啊
回复 7# yulihua49

参加QQ群 SDBC,100807652,在群共享下载源码和文档。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP