ORM框架有無必要?
疑問:
1、ORM從未逃離 資料庫的影子, 既然無從逃離, 為何又要執著於ORM呢?
2、有些時候實現一個複雜的SQL後臺查詢,用程式語言(非SQL (我也走過彎路,用了被MS鼓吹的linq, 以及linqtosql ))實現起來相當有難度, 既然如此為何還要把複雜度為一度的問題變為二度、三度甚至N度呢
基於此, 我做了以下的處理 ,見 {方案}
3、這樣做是不是真的減輕了開發的工作量?不好意思,並沒有減輕。針對於直接用SQL訪問的(JDBC或者ADO.net)相對而言是加重了。
但是把在關注點轉移了業務中的邏輯實現,複雜度放在UI層與使用者互動上。
如何設計你的Query, 傳入引數到IQuery;
配置層XML如何去寫你的SQL語句;
程式主體業務關不關注這些, 程式只是關注介面(只關注IQuery)。
對於XML層 部分可以寫程式碼自動生成,複雜的SQL還是要人工干預,介面UI的複雜查詢也是需要人為處理的。
4、可擴充套件性和引入其它 大家可以參見 martin flower的企業設計模式架構
------------------------------------------------------------------------------------------------------------------
{方案}:
剛剛學java想找出與ms entrprise library相媲美的庫,度娘告之有apache commons dbutils ,主要相中了其tobean,的確是個好東東
下面是我的思路,請大家指證(以下語法為C#,不過思路是相通的)
public abstract class absRepository<T,Key> : IRepository<T,Key> where T : class, new()
{
SQLHelper db = new SQLHelper(); // java呼叫apache commons dbutils, .net中用的是ms entrprise library IDataReaderEntityBuilder<TResult>.CreateBuilder(datarow);
public abstract string OwnerName { get; }//可以取自某配置獲取內容
}
public interface IRepository<T, Key>
{
/// <summary>
/// 物件標識
/// </summary>
string OwnerName { get; }
IList<T> GetByCriteria<Query>(Query query);
IList<T> GetByCriteria<Query>(Query query, int pageIndex, int pageSize, out int pageCount);
int GetCount<Query>(Query query);
bool Contains(Key key);
T Get(Key key);
bool Create(T t);
bool Update(Key key, T t);
bool Remove(Key key);
Key Get(T t);
bool Equals(Key l, Key r);
}
public interface IQuery
{
/// <summary>
/// 查詢編號,或者查詢語句
/// </summary>
/// <returns></returns>
string getNo();
object[] getParams();
}
public interface ISortQuery : IQuery
{
string sort { get; set;}
}
1、ORM從未逃離 資料庫的影子, 既然無從逃離, 為何又要執著於ORM呢?
2、有些時候實現一個複雜的SQL後臺查詢,用程式語言(非SQL (我也走過彎路,用了被MS鼓吹的linq, 以及linqtosql ))實現起來相當有難度, 既然如此為何還要把複雜度為一度的問題變為二度、三度甚至N度呢
基於此, 我做了以下的處理 ,見 {方案}
3、這樣做是不是真的減輕了開發的工作量?不好意思,並沒有減輕。針對於直接用SQL訪問的(JDBC或者ADO.net)相對而言是加重了。
但是把在關注點轉移了業務中的邏輯實現,複雜度放在UI層與使用者互動上。
如何設計你的Query, 傳入引數到IQuery;
配置層XML如何去寫你的SQL語句;
程式主體業務關不關注這些, 程式只是關注介面(只關注IQuery)。
對於XML層 部分可以寫程式碼自動生成,複雜的SQL還是要人工干預,介面UI的複雜查詢也是需要人為處理的。
4、可擴充套件性和引入其它 大家可以參見 martin flower的企業設計模式架構
------------------------------------------------------------------------------------------------------------------
{方案}:
剛剛學java想找出與ms entrprise library相媲美的庫,度娘告之有apache commons dbutils ,主要相中了其tobean,的確是個好東東
下面是我的思路,請大家指證(以下語法為C#,不過思路是相通的)
public abstract class absRepository<T,Key> : IRepository<T,Key> where T : class, new()
{
SQLHelper db = new SQLHelper(); // java呼叫apache commons dbutils, .net中用的是ms entrprise library IDataReaderEntityBuilder<TResult>.CreateBuilder(datarow);
public abstract string OwnerName { get; }//可以取自某配置獲取內容
}
public interface IRepository<T, Key>
{
/// <summary>
/// 物件標識
/// </summary>
string OwnerName { get; }
IList<T> GetByCriteria<Query>(Query query);
IList<T> GetByCriteria<Query>(Query query, int pageIndex, int pageSize, out int pageCount);
int GetCount<Query>(Query query);
bool Contains(Key key);
T Get(Key key);
bool Create(T t);
bool Update(Key key, T t);
bool Remove(Key key);
Key Get(T t);
bool Equals(Key l, Key r);
}
public interface IQuery
{
/// <summary>
/// 查詢編號,或者查詢語句
/// </summary>
/// <returns></returns>
string getNo();
object[] getParams();
}
public interface ISortQuery : IQuery
{
string sort { get; set;}
}
[該貼被bigmouthz於2012-07-31 13:39修改過]
相關文章
- 無邊框 Button 【WPF】
- 觀點 | 重新思考機器學習:大資料消耗已無必要機器學習大資料
- 奧卡姆剃刀定律:如無必要,勿增實體
- Element UI Input框輸入無效UI
- 關於border設定無邊框
- 常用的UI框架有哪些UI框架
- 小程式中button的邊框無法去除 button邊框如何去除
- Matlab | 儲存影像無白色邊框。Matlab
- Web前端開發框架有哪些?Web前端框架
- JAVA集合框架有那些內容Java框架
- Bootstrap 模態框無法呼叫的問題boot
- Axure之解決文字框無法輸入
- Django ORMDjangoORM
- orm 框架ORM框架
- orm初探ORM
- Spring MVC框架有哪些優點SpringMVC框架
- 使用 ant design 模態框 載入框始終在上面,渲染無效
- 手擼ORM淺談ORM框架之Query篇ORM框架
- 手擼ORM淺談ORM框架之Delete篇ORM框架delete
- 手擼ORM淺談ORM框架之Update篇ORM框架
- Python的web主流框架有什麼?PythonWeb框架
- 什麼是前端模組化?前端模組化開發到底有無必要前端
- ORM操作mysqlORMMySql
- ORM入門ORM
- Django ORM QuerySetDjangoORM
- beego orm使用GoORM
- ORM簡介ORM
- ORM基礎ORM
- orm 查詢ORM
- django mysqlclient ormDjangoMySqlclientORM
- 輕量級.NET ORM、高效能.NET ORM 之 SqlSugar 開源ORM - ASP.NETORMSqlSugarASP.NET
- 手擼ORM淺談ORM框架之Add篇ORM框架
- 手擼ORM淺談ORM框架之基礎篇ORM框架
- Dapper ORM VS SqlSugar ORM的 8場對決APPORMSqlSugar
- 【iOS 開發】iOS 無彈框更換 app 圖示iOSAPP
- 當資料庫表無主鍵ID時,ORM這樣更新資料資料庫ORM
- 無法訪問SmartScreen怎麼辦?使用程式碼簽名證書有必要!
- Flask框架和Django框架有什麼區別?Flask框架Django