ORM
简介
【一句话说明】对象关系映射(Object Relational Mapping,简称ORM),将关系数据库中的记录映射为Java中的对象。
面向对象是从软件工程基本原则(如耦合、聚合、封装)的基础上发展起来的,而关系数据库则是从数学理论发展而来的,两套理论存在显著的区别。为了解决这个不匹配的现象,对象关系映射技术应运而生。
ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。
ORM提供了实现持久化层的另一种模式,它采用映射元数据来描述对象关系的映射,使得ORM中间件能在任何一个应用的业务逻辑层和数据库层之间充当桥梁。
ORM框架:这种框架一般需要有两种能力:
1.具有访问数据库及操作(CRUD操作)数据库的能力。
2.可以进行数据和对象之间的映射转换,在操作数据前,将对象转为数据,拼接sql;在查询完数据库后,将查询结果自动映射成对象。
ORM框架通常还提供了集成第三方缓存、数据源、数据库连接池等组件的接口。
ORM框架比较常用的有hibernate,mybatis。hibernate是完全的ORM框架;而mybatis是一种半ORM框架,需要定义sql语句。
优缺点&使用建议
优缺点总结 by 求知老田,个人觉得很好,直接引用
http://www.cnblogs.com/wrcyl/p/5845147.html
优点:
- 让程序员不再关注数据库细节,专心在业务逻辑上,程序员可以不懂数据库就可以开发系统。
- 让数据库迁移变的非常方便,如果系统需要更改使用的数据库,直接改配制就好了,不要再管不同数据库之间的语法差异。
- 省时,可快速开发,因为不需要自己写复杂的SQL语句,不需要封装复杂的数据底层,这样可以节省很多时间。
缺点:
- 我觉得不懂数据库的程序员不是好程序员,ORM不能帮你生成所有的业务语句,有些复杂的生成不了,还是需要写SQL,例如复杂的报表。
- 配制过于繁琐,出错后不好定位问题点在哪。
- 性能低,因为它内部是使用了大量反射,还有数据库检测,造成性能必然低下。
- 需要额外的学习成本,虽然不需要学习数据库,但是需要学习ORM语句。
- 容易引起不规范开发,因为ORM可以在任何地方写ORM语句然后调用开发,这样对于初始程序员来说他们很可能在系统的任何地方乱丢ORM语句,这样给维护带来了很大的难度。
缺点简述:(1)不太容易处理复杂查询语句(2)性能较直接用SQL差
参考文章
仅列举了部分近期的优秀参考文章
http://www.cnblogs.com/wgbs25673578/p/5140482.html
http://www.cnblogs.com/wrcyl/p/5845147.html
https://blog.csdn.net/u011919606/article/details/83049424