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

1. Orm的目标1

1.1. 动态obj1

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

2. Orm的概念1

3. 动态obj2

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://www.cnblogs.com/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. Java开源生鲜电商平台-监控模块的设计与架构(源码可下载)

    Java开源生鲜电商平台-监控模块的设计与架构(源码可下载) 说明:Java开源生鲜电商平台-监控模块的设计与架构,我们谈到监控,一般设计到两个方面的内容: 1. 服务器本身的监控.(比如:linux ...

  2. Java开源生鲜电商平台-性能优化以及服务器优化的设计与架构(源码可下载)

    Java开源生鲜电商平台-性能优化以及服务器优化的设计与架构(源码可下载) 说明:Java开源生鲜电商平台-性能优化以及服务器优化的设计与架构,我采用以下三种维度来讲解 1.  代码层面. 2.  数 ...

  3. Java生鲜电商平台-redis缓存在商品中的设计与架构

    Java生鲜电商平台-redis缓存在商品中的设计与架构 说明:Java开源生鲜电商平台-redis缓存在商品中的设计与架构. 1. 各种计数,商品维度计数和用户维度计数 说起电商,肯定离不开商品,而 ...

  4. Java生鲜电商平台-供应链模块的设计与架构

    Java生鲜电商平台-供应链模块的设计与架构 说明:Java开源生鲜电商平台中供应链模块属于卖家的行为,也就是卖家如何管理他们自己的供应商,包括结算方式,压款方式,结算周期等等,超出了我这个B2B平台 ...

  5. Java生鲜电商平台-商品价格的设计与架构

    Java生鲜电商平台-商品价格的设计与架构 说明:Java开源生鲜电商平台-商品价格的设计与架构,主要是对商品的价格进行研究与系统架构. 一.常见的电商价格 市场价(List Price):这个价格仅 ...

  6. Atitit.ati dwr的原理and设计 attilax 总结 java php 版本

    Atitit.ati dwr的原理and设计 attilax 总结 java php 版本 1. dwr的优点相对于ajax来说..1 2. DWR工作原理1 3. Dwr的架构2 4. 自定义dwr ...

  7. Atitit.ati&#160;dwr的原理and设计&#160;attilax&#160;总结&#160;java&#160;php&#160;版本号

    Atitit.ati dwr的原理and设计 attilax 总结 java php 版本号 1. dwr的长处相对于ajax来说.. 1 2. DWR工作原理 1 3. Dwr的架构 2 4. 自己 ...

  8. Atitit ati licenseService    设计原理

    Atitit ati licenseService    设计原理 C:\0workspace\AtiPlatf\src_atibrow\com\attilax\license\LicenseX.ja ...

  9. Atitit  文件上传  架构设计 实现机制 解决方案  实践java php c#.net js javascript  c++ python

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

随机推荐

  1. 实现自动解析properties文件并装配到Bean

    主要实现了,配置的属性就装配, 没有配置的属性不装配 思路: 1 . 通过反射获取类内部所有方法名称 2 . 获取perperties 的key集合 3 .  处理字符串,比较两个匹配,如果匹配成功就 ...

  2. Unity3d插件研究之Easytouch

    但我们开发移动端的游戏时,发现使用Input.GetMouseButtonDown的方法不可用,怎么办? 虽然unity3d也有自带触屏的方法,但是使用起来代价太高,什么单击,双击这些功能都要自己封装 ...

  3. 翻译:Spring-Framework-Reference Document:11-Transaction Management

    TUESDAY, 07 APRIL Comprehensive transaction support is the most compelling reasons to use the Spring ...

  4. hive如何使用中文查询条件

    直接在hql中使用中文会报错:org.apache.hadoop.ipc.RemoteException: java.io.IOException: java.lang.RuntimeExceptio ...

  5. [转]Sql Server 主从数据库配置

    本文转自:http://www.cnblogs.com/yukaizhao/archive/2010/06/02/sql-server-master-slave-mode.html 网站规模到了一定程 ...

  6. Tile based Rendering //后面一段是手机优化建议

    https://www.imgtec.com/blog/a-look-at-the-powervr-graphics-architecture-tile-based-rendering/ 一种硬件结构 ...

  7. 深度增强学习--A3C

    A3C 它会创建多个并行的环境, 让多个拥有副结构的 agent 同时在这些并行环境上更新主结构中的参数. 并行中的 agent 们互不干扰, 而主结构的参数更新受到副结构提交更新的不连续性干扰, 所 ...

  8. 转:Android 签名验证机制(相当不错,强烈推荐)

    转:  http://riusksk.blogbus.com/logs/272154406.html Android应用签名验证过程中,满足以下条件才能安装应用: 1.SHA-1(除META-INF目 ...

  9. [ES6] 09. Destructuring Assignment -- 2

    Read More: http://es6.ruanyifeng.com/#docs/destructuring Array “模式匹配”,只要等号两边的模式相同,左边的变量就会被赋予对应的值: Ex ...

  10. Groovy(java)+Spock+IDEA+maven+Jenkins+SVN+maven-surefire-plugin+maven-surefire-report-plugin/maven-antrun-extended-plugin集成接口测试框架

    文章为原创,未经本人授权禁止转载. 一.spock框架环境搭建. 二.基于spock框架的脚本开发. 三.基于spock框架的用例执行并生成HTML报告. 四.集成jenkins生成HTML报告. 五 ...