java orm是什么,讓我們一起了解一下?
對象關系映射(Object-Relational Mapping,簡稱ORM)是一種為了解決程序的面向對象模型與數據庫的關系模型互不匹配問題的技術;簡單的說,ORM是通過使用描述對象和數據庫之間映射的元數據(在Java中可以用XML或者是注解),將程序中的對象自動持久化到關系數據庫中或者將關系數據庫表中的行轉換成Java對象,其本質上就是將數據從一種形式轉換到另外一種形式。
ORM的優缺點有哪些?
優勢:
第一:隱藏了數據訪問細節,“封閉”的通用數據庫交互,ORM的核心。他使得我們的通用數據庫交互變得簡單易行,并且完全不用考慮該死的SQL語句??焖匍_發,由此而來。
第二:ORM使我們構造固化數據結構變得簡單易行。在ORM年表的史前時代,我們需要將我們的對象模型轉化為一條一條的SQL語句,通過直連或是DB helper在關系數據庫構造我們的數據庫體系。而現在,基本上所有的ORM框架都提供了通過對象模型構造關系數據庫結構的功能。
缺點:
第一:無可避免的,自動化意味著映射和關聯管理,代價是犧牲性能(早期,這是所有不喜歡ORM人的共同點)。現在的各種ORM框架都在嘗試使用各種方法來減輕這塊(LazyLoad,Cache),效果還是很顯著的。
第二:面向對象的查詢語言(X-QL)作為一種數據庫與對象之間的過渡,雖然隱藏了數據層面的業務抽象,但并不能完全的屏蔽掉數據庫層的設計,并且無疑將增加學習成本。
第三:對于復雜查詢,ORM仍然力不從心。雖然可以實現,但是不值的。視圖可以解決大部分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;?} } }
以上就是小編今天的分享了,希望可以幫助到大家。