Atitit.ati?orm的設計and架構總結?適用于java?c#?php版

Atitit.ati?orm的設計and架構總結?適用于java?c#?php

?

1.?Orm的目標 1

1.1.?動態obj 1

1.2.?Hbapi(meger,save,update,del) 1

2.?Orm的概念 1

3.?動態obj 2

4.?參考 4

?

?

?

?

?

?

1.?Orm的目標

1.1.?動態obj

1.2.?Hbapi(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



本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/284324.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/284324.shtml
英文地址,請注明出處:http://en.pswp.cn/news/284324.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【ArcGIS微課1000例】0043:ArcGIS縮略圖的創建及應用

縮略圖通常出現在地圖文檔中&#xff0c;便于在啟動頁面中快速打開指定的地圖文檔&#xff0c;提高效率。 文章目錄一、縮略圖預覽二、縮略圖創建一、縮略圖預覽 打開ArcMap軟件&#xff0c;彈出啟動窗口&#xff0c;在最近打開的文檔中&#xff0c;可以看到兩類&#xff0c;一…

JSP簡單登錄系統

Login登陸界面 <body> 登陸 <% session.invalidate();%> <form action"TestPW.jsp" method"post">用戶名<input type"text" name"username"> 密碼<input type"password" name"password&quo…

手動從0搭建ABP框架-ABP官方完整解決方案和手動搭建簡化解決方案實踐

本文主要講解了如何把ABP官方的在線生成解決方案運行起來&#xff0c;并說明了解決方案中項目間的依賴關系。然后手動實踐了如何從0搭建了一個簡化的解決方案。ABP官方的在線生成解決方案源碼下載參考[3]&#xff0c;手動搭建的簡化的解決方案源碼下載參考[4]。一.ABP官方在線生…

Java捕獲并處理線程失敗拋出的異常

使用 UncaughtExceptionHandler 示例代碼如下&#xff1a; Thread.UncaughtExceptionHandler handler new Thread.UncaughtExceptionHandler() { public void uncaughtException(Thread th, Throwable ex) {System.out.println("Uncaught exception: " ex);} }; Th…

【ArcGIS微課1000例】0044:ArcGIS使用山體陰影顯示DEM的3種方法

本文講解了ArcGIS使用山體陰影顯示DEM的3種方法:“影像分析”窗口、使用山體陰影效果和山體陰影效果工具的不同之處。 文章目錄 一、“影像分析”窗口二、使用山體陰影效果三、山體陰影工具一、“影像分析”窗口 使用山體陰影顯示 DEM 的方法有兩種。最簡單并且最具交互效果的…

區塊鏈每日投資指南(0129)-證監會副主席表示數字貨幣需要監管

上一周的走勢依然是工作日下跌&#xff0c;周末拉升的結局。這主要原因依然是&#xff0c;周末不上班。最終政策出爐之前&#xff0c;市場恐怕還將繼續震蕩。下周的工作日恐怕會重演下跌的節奏。但是經過了17號&#xff0c;23號&#xff0c;26號三次筑底來看&#xff0c;如果政…

藍綠發布、滾動發布、灰度發布,有什么區別?

在項目迭代的過程中&#xff0c;不可避免需要”上線“。上線對應著部署&#xff0c;或者重新部署&#xff1b;部署對應著修改&#xff1b;修改則意味著風險。目前有很多部署發布的技術, 這兒將常見的做一個總結。 上面所說難免有些抽象, 舉一個情景例子, 加入你是微博項目負責…

iOS 音頻開發

音頻基礎知識 組成 音頻文件的組成&#xff1a;文件格式(或者音頻容器) 數據格式(或者音頻編碼)。 文件格式(或音頻容器)是用于形容文件本身的格式。 我們可以通過多種不同的方法為真正的音頻數據編碼。例如CAF文件便是一種文件格式&#xff0c;它能夠包含MP3格式&#xff0c;…

【ArcGIS微課1000例】0045:ArcGIS制圖模板的自定義與使用方法

怎樣在ArcGIS中保存地圖模板以在地圖制圖與打印之前使用呢? 文章目錄 一、地圖模板簡介二、地圖模板創建1. 創建模板2. 創建縮略圖3. 保存模板三、地圖模板使用一、地圖模板簡介 使用ArcMap打開一個已有的地圖模板,【文件】→【新建】,任選一個模板,這里選擇一個傳統模板。…

api 接口開發理論 在php中調用接口以及編寫接口

如&#xff1a;http://localhost/openUser.php?actget_user_list&typejson 在這里openUser.php相當于一個接口&#xff0c;其中get_user_list 是一個API&#xff08;獲取用戶列表&#xff09;&#xff0c;講求返回的數據類型為JSON格式。 你只需要在你PHP代碼中執行這條鏈…

怎么樣的框架對于開發者是友好的?

云原生離.NET開發到底有多遠&#xff1f;云原生的概念由來不久&#xff0c;故事從“上云”開始&#xff0c;伴隨dorker、k8s等技術的推出&#xff0c;以及CNCF與各大云廠商的共同加持&#xff0c;云原生逐漸被大家所熟知。云原生不依賴具體的云&#xff0c;不管公有云還是私有云…

JS 燒腦面試題大賞

本文精選了20多道具有一定迷惑性的js題&#xff0c;主要考察的是類型判斷、作用域、this指向、原型、事件循環等知識點&#xff0c;每道題都配有詳細傻瓜式的解析&#xff0c;偏向于初學者&#xff0c;大佬請隨意。 第1題 let a 1 function b(a) {a 2console.log(a) } b(a)…

蘋果ios用js的Date()出現NaN問題解決辦法

原文:蘋果ios用js的Date&#xff08;&#xff09;出現NaN問題解決辦法ios使用如下方法獲得NaN&#xff0c;安卓手機則是正常計算&#xff0c;解決方法是換個這個時間的格式 new Date("2017-04-28 23:59:59").getTime() 換成如下方式就正常了&#xff0c;就是‘-’換成…

Thinkphp 驗證碼、文件上傳

一、驗證碼 驗證碼參數 例題&#xff1a;登錄時驗證下驗證碼 LoginController.class.php <?php namespace Home\Controller; use Think\Controller; class LoginController extends Controller {public function Login(){if(empty($_POST)){$this->display(); } e…

ArcGIS實驗教程——實驗四十七:數據驅動頁工具批量制作甘肅省各地級市人口七普專題圖集

本實驗詳細講解利用ArcGIS數據驅動頁工具,制作甘肅省各地級市人口七普專題圖集。 文章目錄 1. 數據驅動頁工具簡介2. 甘肅省各地級市人口七普專題圖集2.1 符號化及標注2.2 數據驅動頁的創建2.3 數據驅動頁面文本操作2.4 數據驅動頁的導出1. 數據驅動頁工具簡介 數據驅動頁面是…

為什么Java有GC調優而沒聽說過有CLR的GC調優?

前言在很多的場合我都遇到過一些群友提這樣的一些問題&#xff1a;為什么Java有GC調優而CLR沒有聽說過有GC調優呢&#xff1f;到底是Java的JVM GC比較強還是C#使用的.NET CLR的GC比較強呢&#xff1f;其實業內已經有幾位大佬的高贊文章和大家分享一下&#xff0c;主要討論JVM和…

Ubuntu16.04 - 安裝RabbitVCS,linux下的TortoiseSVN!!!

RabbitVCS 官網&#xff1a;http://rabbitvcs.org/ 1&#xff0c;添加PPA源。在shell里面執行下面命令&#xff1a; sudo add-apt-repository ppa:rabbitvcs/ppa 這個命令執行完畢后&#xff0c;查看執行結果看是否密鑰導入成功&#xff0c;成功截圖&#xff1a; 如果導入密鑰失…

8 種最坑的SQL錯誤用法

1、LIMIT 語句 2、隱式轉換 3、關聯更新、刪除 4、混合排序 5、EXISTS語句 6、條件下推 7、提前縮小范圍 8、中間結果集下推 總結 sql語句的執行順序&#xff1a; FROM <left_table>ON <join_condition><join_type>JOIN <right_table>WHERE &…

Vue根據菜單json數據動態按需加載路由Vue-router

每個菜單項對應一個頁面組件&#xff0c;根據菜單項動態按需加載路由 路由配置的正確寫法&#xff1a; /*router/index.js*/ import Vue from vue import Router from vue-router import url from ./url import store from ../storeVue.use(Router)const router new Router({/…

【ArcGIS微課1000例】0047:制圖表達(2)---河流漸變效果的實現

當我們在ArcMap中加載河流數據時,得到的效果往往如圖所示,僅僅是表示河流位置的線要素,既無法真實地反映河流的實際情況,同時在出圖的時候也遠沒有任何美化效果。 文章目錄 1.創建制圖表達2.添加幾何效果3.使用制圖規則4.使用制圖表達屬性覆蓋警告:這些操作會對您的數據庫…