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

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

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

Proj.amazon .spider

publicobjecthanlder(objectobj, ClassLibrary1.com.attilax.lang.FilterFilterChainnextChain)

{

Dictionary ormObj =newDictionary();

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

Dictionary flds_frm = (Dictionary)obj;

Dictionary flds =newDictionary();

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

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

//  flds.Add("good_nam

ormObj.Add("fields", flds);

AtiOrmXormx = (AtiOrmX)newIocX().getBean("ormx");

returnormx.save(ormObj);

}

-------code

publicclassAtiOrmX

{

publicIocioc;

publicObjectsave(ObjectormObj)

{

Stringsql =SqlX.getSql(ormObj);

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

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

returndbx.exec(sql);

}

}

publicclassSqlX

{

publicstaticstringgetSql(objectormObj)

{

//  throw new NotImplementedException();

Dictionary ormobjMap = ((Dictionary)ormObj) ;

Dictionary fldMap = (Dictionary)ormobjMap["fields"];

System.Collections.Generic.List flds =newList();

System.Collections.Generic.List fld_vals =newList();

foreach(variteminfldMap)

{

flds.Add(item.Key);

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

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

}

Stringfld_s =ListX.join(",", flds);

Stringv_s =ListX.join(",", fld_vals);

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

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

returnsql;

}

}

publicclassDbUtil

{

publicObjectexec(stringsql)

{

MySqlConnectionmysqlcon =this.getmysqlcon();

mysqlcon.Open();

MySqlCommandmysqlcom =newMySqlCommand(sql, mysqlcon);

intr = mysqlcom.ExecuteNonQuery();

mysqlcom.Dispose();

mysqlcon.Close();

mysqlcon.Dispose();

returnr;

}

------ioc

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

{

DbUtildbx =newDbUtil();

returndbx;

});

4.

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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值