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; } } }
以上就是小编今天的分享了,希望可以帮助到大家。