Atitit.ati orm的设计and架构总结 适用于java c# php版

1. Orm的目标 1

1.1. 动态obj 1

1.2. Hb的api(meger,save,update,del) 1

2. Orm的概念 1

3. 动态obj 2

4. 參考 4

1. Orm的目标

1.1. 动态obj

1.2. Hb的api(meger,save,update,del)

2. Orm的概念

saveOrUpdate后的对象会纳入session的管理,对象的状态会跟数据库同步。再次查询该对象会直接从session中取,merge后的对象不会纳入session的管理,再次查询该对象还是会从数据库中取。.

对于hibernate。它的对象有三种状态。transient、persistent、detached

下边是常见的翻译办法:

transient:瞬态或者自由态

persistent:持久化状态

detached:脱管状态或者游离态

脱管状态的实例能够通过调用save()、persist()或者saveOrUpdate()方法进行持久化。

persist和merge: 没有和数据库进行同步

save和update:    处理后的数据处于持久状态。换句话说,调用sql进行和数据库同步的步骤。

总的来说,对于长事务的处理,应该使用persist和merge。降低数据库交互

作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:1466519819@qq.com

转载请注明来源: http://blog.csdn.net/attilax

3. 动态obj

Proj.amazon .spider

public object hanlder(object obj, ClassLibrary1.com.attilax.lang.FilterFilterChain nextChain)

{

Dictionary<string, Object> ormObj = new Dictionary<string, object>();

ormObj.Add("table", "ecs_goods");

Dictionary<string, Object> flds_frm = (Dictionary<string, Object>)obj;

Dictionary<string, Object> flds = new Dictionary<string, object>();

flds.Add("goods_name", flds_frm["title"]);

flds.Add("goods_desc", "goods_descxxx");

//  flds.Add("good_nam

ormObj.Add("fields", flds);

AtiOrmX ormx = (AtiOrmX)new IocX().getBean("ormx");

return ormx.save(ormObj);

}

-------code

public  class AtiOrmX

{

public Ioc ioc;

public Object save(Object ormObj)

{

String sql = SqlX.getSql(ormObj);

Console.WriteLine("--orm sql:" + sql);

DbUtil dbx = (DbUtil)ioc.getBean("dbx");

return     dbx.exec(sql);

}

}

public class SqlX

{

public static string getSql(object ormObj)

{

//  throw new NotImplementedException();

Dictionary<String, Object> ormobjMap = ((Dictionary<String, Object>)ormObj) ;

Dictionary<String, Object> fldMap = (Dictionary<String, Object>)ormobjMap["fields"];

System.Collections.Generic.List<object> flds = new List<object>();

System.Collections.Generic.List<object> fld_vals = new List<object>();

foreach (var item in fldMap)

{

flds.Add(item.Key);

fld_vals.Add("'"+ item.Value+"'");

Console.WriteLine(item.Key + item.Value);

}

String fld_s = ListX.join(",", flds);

String v_s = ListX.join(",", fld_vals);

String sql = " insert into " + ormobjMap["table"] + "(@flds)values(@vs)";

sql = sql.Replace("@flds", fld_s); sql = sql.Replace("@vs", v_s);

return sql;

}

}

public class DbUtil

{

public Object exec(string sql)

{

MySqlConnection mysqlcon = this.getmysqlcon();

mysqlcon.Open();

MySqlCommand mysqlcom = new MySqlCommand(sql, mysqlcon);

int r = mysqlcom.ExecuteNonQuery();

mysqlcom.Dispose();

mysqlcon.Close();

mysqlcon.Dispose();

return r;

}

------ioc

facMap.Add("dbx", () =>

{

DbUtil dbx = new DbUtil();

return dbx;

});

4. 參考

hibernate的各种保存方式的差别 (save_persist_merge) - 昼不懂夜的黑的日志 - 网易博客.html



Atitit.ati orm的设计and架构总结 适用于java c# php版相关推荐

  1. Atitit.json类库的设计与实现 ati json lib

    Atitit.json类库的设计与实现 ati json lib 1. 目前jsonlib库可能有问题,可能版本冲突,抛出ex1 2. 解决之道:1 2.1. 自定义json解析库,使用多个复合的js ...

  2. Atitit 项目的主体设计与结构文档 v5

    Atitit 项目的主体设计与结构文档 v5 1. 版本历史说明2 2. 功能大概说明2 3. 实现的目标3 3.1. cross device跨设备(pc 手机 平板)3 3.2. cross sc ...

  3. 阿提拉公司 java_Atitit  文件上传  架构设计 实现机制 解决方案  实践java php c#.net js javascript  c++ python...

    Atitit 文件上传 架构设计 实现机制 解决方案 实践 java php c#.net js javascript c++ python 1 . 上传的几点要求 2 1 .1. 本地预览 2 1 ...

  4. Java生鲜电商平台-监控模块的设计与架构

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! ‍ 来源:https://www.cnblogs.com/ ...

  5. 插件式设计的架构模型与实例

    插件式设计近年来非常流行,其中eclipse起了推波助澜的作用,提到插件式就会不由自主的想到eclipse.其实插件式设计并不是什么新事物,早在几十年前就有了.像X Server就是基于插件式设计的, ...

  6. 数据库类型少_全栈之数据库系列 - 数据库的设计、架构和使用规范

    当我们要存储的数据比较少的时候,数据库设计的优势并不能发挥出来,但是当我们对数据的需求量越来越大时,对数据库的设计就很有必要性了!如果数据库的设计不当会造成数据冗余.修改复杂.操作数据异常等问题,而好 ...

  7. java大型wms架构设计_Java生鲜电商平台-库存管理设计与架构

    Java生鲜电商平台-库存管理设计与架构 WMS的功能: 1.业务批次管理 该功能提供完善的物料批次信息.批次管理设置.批号编码规则设置.日常业务处理.报表查询,以及库存管理等综合批次管理功能,使企业 ...

  8. python控制modem的at指令_硬件设计MCU架构+Python命名空间和作用域

    硬件设计-MCU架构 CISC结构的单片机 其数据线和指令线分时复用,称为冯-诺伊曼结构 优点:指令丰富,功能较强,但确定取指令和取数据不能同时进行,速度受限,且价格也很高:属于CISC结构的单片机有 ...

  9. Java生鲜电商平台-团购模块设计与架构

    Java生鲜电商平台-团购模块设计与架构 说明:任何一个电商系统中,对于促销这块是必不可少的,毕竟这块是最吸引用户的,用户也是最爱的模块之一,理由很简单,便宜. 我的经验是无论是大的餐饮点还是小的餐饮 ...

最新文章

  1. 【图像分类】从数据集和经典网络开始
  2. 【IdentityServer4文档】- 欢迎来到 IdentityServer4
  3. SAP UI5 web Component里的条件渲染机制
  4. QM课程02-外部功能
  5. 计算机专业毕业论文指导记录详细,毕业论文指导记录怎么写 了解一下
  6. netty接收大文件的方法
  7. python rsa 公钥解密_python使用rsa库做公钥解密(网上别处找不到)
  8. requirejs整合art-template模板引擎
  9. java懒加载注解_在springboot中实现个别bean懒加载的操作
  10. network 宽带比特b,字节B
  11. 延时队列的几种实现方式(只有原理,并没有源码)
  12. dematel法分析系统中各要素的重要程度
  13. linux反编译lua工具,lua脚本编译及反编译工具下载
  14. 用计算机弹逆战的简谱,张杰逆战歌曲钢琴简谱
  15. 39岁java程序员,失业中,看不到希望,很迷茫,路在何方?
  16. python基于朴素贝叶斯算法实现新闻分类
  17. 使用Jetty运行项目报错:Form too large或Form too many keys
  18. DBCO-PEG9-NH2_2353409-99-9 点击化学 PEG 试剂
  19. Invalid byte tag in constant pool: 18
  20. 云原生,炸裂!(文末有福利)

热门文章

  1. shell中的${},##和%%的使用
  2. angelica类似_亲爱的当归(Angelica)是第一个让我哭泣的VR体验
  3. 印发 指南 通知_通知设计的综合指南
  4. Exchange Server 2016管理系列课件50.DAG管理之激活数据库副本
  5. SVN四部曲之SVN设置详解深入
  6. memcache的学习路线图
  7. Acitivty生命周期
  8. java 文件上传至oracle blob字段 实现
  9. linux 后台一直执行的sh
  10. python删除两个excel表中的相同元素_python筛选出两个文件中重复行的方法