
java orm是什么,讓我們一起了解一下?
對象關系映射(Object-Relational Mapping,簡稱ORM)是一種為了解決程序的面向?qū)ο竽P团c數(shù)據(jù)庫的關系模型互不匹配問題的技術;簡單的說,ORM是通過使用描述對象和數(shù)據(jù)庫之間映射的元數(shù)據(jù)(在Java中可以用XML或者是注解),將程序中的對象自動持久化到關系數(shù)據(jù)庫中或者將關系數(shù)據(jù)庫表中的行轉(zhuǎn)換成Java對象,其本質(zhì)上就是將數(shù)據(jù)從一種形式轉(zhuǎn)換到另外一種形式。
ORM的優(yōu)缺點有哪些?
優(yōu)勢:
第一:隱藏了數(shù)據(jù)訪問細節(jié),“封閉”的通用數(shù)據(jù)庫交互,ORM的核心。他使得我們的通用數(shù)據(jù)庫交互變得簡單易行,并且完全不用考慮該死的SQL語句。快速開發(fā),由此而來。
第二:ORM使我們構造固化數(shù)據(jù)結構變得簡單易行。在ORM年表的史前時代,我們需要將我們的對象模型轉(zhuǎn)化為一條一條的SQL語句,通過直連或是DB helper在關系數(shù)據(jù)庫構造我們的數(shù)據(jù)庫體系。而現(xiàn)在,基本上所有的ORM框架都提供了通過對象模型構造關系數(shù)據(jù)庫結構的功能。

缺點:
第一:無可避免的,自動化意味著映射和關聯(lián)管理,代價是犧牲性能(早期,這是所有不喜歡ORM人的共同點)。現(xiàn)在的各種ORM框架都在嘗試使用各種方法來減輕這塊(LazyLoad,Cache),效果還是很顯著的。
第二:面向?qū)ο蟮牟樵冋Z言(X-QL)作為一種數(shù)據(jù)庫與對象之間的過渡,雖然隱藏了數(shù)據(jù)層面的業(yè)務抽象,但并不能完全的屏蔽掉數(shù)據(jù)庫層的設計,并且無疑將增加學習成本。
第三:對于復雜查詢,ORM仍然力不從心。雖然可以實現(xiàn),但是不值的。視圖可以解決大部分calculated column,case ,group,having,order by, exists,但是查詢條件(a and b and not c and (d or d))。
示例說明如下:
public?class?M_People
{undefined
string?_Pl_ID;
[DataFieldAttribute("Pl_ID",?"Int")]
public?string?Pl_ID
{undefined
get?{?return?_Pl_ID;?}
set?{?_Pl_ID?=?value;?}
}
int?_PL_Age;
[DataFieldAttribute("PL_Age",?"Int")]
public?int?PL_Age
{undefined
get?{?return?_PL_Age;?}
set?{?_PL_Age?=?value;?}
}
string?_Pl_Sex;
[DataFieldAttribute("Pl_Sex",?"nvarchar")]
public?string?Pl_Sex
{undefined
get?{?return?_Pl_Sex;?}
set?{?_Pl_Sex?=?value;?}
}
string?_Pl_LoginName;
[DataFieldAttribute("Pl_LoginName",?"nvarchar")]
public?string?Pl_LoginName
{undefined
get?{?return?_Pl_LoginName;?}
set?{?_Pl_LoginName?=?value;?}
}
string?_Pl_TrueName;
[DataFieldAttribute("Pl_TrueName",?"nvarchar")]
public?string?Pl_TrueName
{undefined
get?{?return?_Pl_TrueName;?}
set?{?_Pl_TrueName?=?value;?}
}
string?_PL_Pwd;
[DataFieldAttribute("PL_Pwd",?"nvarchar")]
public?string?PL_Pwd
{undefined
get?{?return?_PL_Pwd;?}
set?{?_PL_Pwd?=?value;?}
}
}以上就是小編今天的分享了,希望可以幫助到大家。
