Atitit.ati orm的设计and架构总结 适用于java c# php版
Atitit.ati orm的设计and架构总结 适用于java c# php版
1.2. Hb的api(meger,save,update,del)1
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版的更多相关文章
- Java开源生鲜电商平台-监控模块的设计与架构(源码可下载)
Java开源生鲜电商平台-监控模块的设计与架构(源码可下载) 说明:Java开源生鲜电商平台-监控模块的设计与架构,我们谈到监控,一般设计到两个方面的内容: 1. 服务器本身的监控.(比如:linux ...
- Java开源生鲜电商平台-性能优化以及服务器优化的设计与架构(源码可下载)
Java开源生鲜电商平台-性能优化以及服务器优化的设计与架构(源码可下载) 说明:Java开源生鲜电商平台-性能优化以及服务器优化的设计与架构,我采用以下三种维度来讲解 1. 代码层面. 2. 数 ...
- Java生鲜电商平台-redis缓存在商品中的设计与架构
Java生鲜电商平台-redis缓存在商品中的设计与架构 说明:Java开源生鲜电商平台-redis缓存在商品中的设计与架构. 1. 各种计数,商品维度计数和用户维度计数 说起电商,肯定离不开商品,而 ...
- Java生鲜电商平台-供应链模块的设计与架构
Java生鲜电商平台-供应链模块的设计与架构 说明:Java开源生鲜电商平台中供应链模块属于卖家的行为,也就是卖家如何管理他们自己的供应商,包括结算方式,压款方式,结算周期等等,超出了我这个B2B平台 ...
- Java生鲜电商平台-商品价格的设计与架构
Java生鲜电商平台-商品价格的设计与架构 说明:Java开源生鲜电商平台-商品价格的设计与架构,主要是对商品的价格进行研究与系统架构. 一.常见的电商价格 市场价(List Price):这个价格仅 ...
- 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 ...
- 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. 自己 ...
- Atitit ati licenseService 设计原理
Atitit ati licenseService 设计原理 C:\0workspace\AtiPlatf\src_atibrow\com\attilax\license\LicenseX.ja ...
- 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 ...
随机推荐
- Shared libraries with GCC on Linux
转:http://www.cprogramming.com/tutorial/shared-libraries-linux-gcc.html By anduril462 Libraries are a ...
- WinCE6.0 2012年补丁下载地址
Windows CE6.0 2012年补丁包WinCEPB60-121231-Product-Update-Rollup-Armv4I.msi下载地址:http://www.microsoft.com ...
- julia应用于自动驾驶汽车、机器人、3D 打印、精准医疗、增强现实、基因组学、能源交易、机器学习、金融风控和太空任务设计等多个领域
编程界的新宠 Julia 发布 1.0 正式版本,多种优势集于一身2018-08-14 14:14 公司Julia 的累积下载次数超过 200 万,已被应用于自动驾驶汽车.机器人.3D 打印.精准医疗 ...
- 网络工程师岗位基础面试题【适用于CCNA/CCNP基础】
网络工程师岗位基础面试题[适用于CCNA/CCNP基础] 1: 交换机是如何转发数据包的?交换机通过学习数据帧中的源MAC地址生成交换机的MAC地址表,交换机查看数据帧的目标MAC地址,根据MAC地址 ...
- 流畅的python第二章序列构成的数组学习记录
python内置序列类型概览 列表推导和生成器表达式 列表推导是构建列表的快捷方式,而生成器表达式可以用来创建其他任何类型的序列 列表推导的示例 >>>test = [i*2 for ...
- Java内存缓存
1.缓存为什么要存在 应用服务器资源是有限的,数据库每秒中接受请求的次数也是有限的.如果利用有限的资源来提供尽可能大的吞吐量呢,一个办法:减少计 算量,缩短请求流程(减少网络io或者硬盘io),这时候 ...
- JS函数节流和函数防抖问题分析
问题1:如果实现了dom拖拽功能,但是在绑定拖拽事件的时候发现每当元素稍微移动一点便触发了大量的回调函数,导致浏览器直接卡死,这个时候怎么办? 问题2:如果给一个按钮绑定了表单提交的post事件,但是 ...
- ORA-04030
ORA-04030: 在尝试分配...字节(...)时进程内存不足的原因分析及解决办法 正在使用的oracle 11g数据库,前天在用一段时间后(开始要较长时间才出现,后来较短时间就出现),频繁报OR ...
- netmap 编译
参考博客:http://www.cnblogs.com/ruo-yu/p/5083290.html 我用的内核版本是4.4.39 step 1:编译内核. step 2:根据参考博客并没有成功编译出我 ...
- [Angular] Extract Implementation Details of ngrx from an Angular Application with the Facade Pattern
Extracting away the implementation details of ngrx from your components using the facade pattern cre ...