Skip to content

Latest commit

 

History

History
73 lines (34 loc) · 3.84 KB

ORM.md

File metadata and controls

73 lines (34 loc) · 3.84 KB

ORM

概念

​ ORM 全称为object relational mapping,中文译为对象关系映射。

​ 主要用于在关系型数据库中建立数据库中的表与对象的映射关系,实现操作对象来间接操作表。

ORM与JDBC的对比

1.JDBC代码繁琐
2、数据库对象连接问题 关系数据对象之间,存在各种关系,包括1对1、1对多、多对1、多对多、级联等。在	   数据库对象更新的时候,如果采用JDBC编程,程序员必须十分小心处理这些关系,以保证维持这些关系不会出    现错误,而这个过程是一个很痛苦的过程。 ORM建立Java对象与数据库对象关系影射的同时,也自动根据数    据库对象之间的关系创建Java对象的关系,并且提供了维持这些关系完整、有效的机制。 
3、系统架构问题 现在的应用系统,一般由展示层、业务逻辑层、数据访问层、数据库层等组成,各层次功能划分非常清晰。JDBC属于数据访问层,但是使用JDBC编程时,程序员必须知道后台是用什么数据库、有哪些表、各个表有有哪些字段、各个字段的类型是什么、表与表之间什么关系、创建了什么索引等等与后台数据库相关的详细信息。相当于软件程序员兼职数据库DBA。 使用ORM技术,可以将数据库层完全隐蔽,呈献给程序员的只有Java的对象,程序员只需要根据业务逻辑的需要调用Java对象的Getter和 Setter方法,即可实现对后台数据库的操作,程序员不必知道后台采用什么数据库、有哪些表、有什么字段、表与表之间有什么关系。 于是,系统设计人员把ORM搭建好后,把Java对象交给程序员去实现业务逻辑,使数据访问层与数据库层清晰分界。 
4、性能问题 采用JDBC编程,在很多时候存在效率低下的问题,
如: pstmt =conn.prepareStatement("insert into user_info values(?,?)"); 
for (int i=0; i<1000; i++) { 
  pstmt.setInt(1,i); 
  pstmt.setString(2,"User"+i.toString()); 
  pstmt.executeUpdate(); 
} 
以上程序将向后台数据库发送1000次SQL语句执行请求,运行效率较低。 如果采用ORM技术,ORM框架将根据具体数据库操作需要,会自动延迟向后台数据库发送SQL请求,如上面的程序,只会在循环完成后,一次向数据库发送操作请求,从而大大降低通讯量,提高运行效率;ORM也可以根据实际情况,将数据库访问操作合成,尽量减少不必要的数据库操作请求。 

主流ORM框架:

1.JPA Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系(只有接口规范) 2.Hibernate 最流行ORM框架,通过对象-关系映射配置,可以完全脱离底层SQL 3.MyBatis  本是apache的一个开源项目 iBatis,支持普通 SQL查询,存储过程和高级映射的优秀持久层框架 4.Apache DBUtils 、Spring JDBCTemplate

 JDBC:操作数据库最底层的方式;

          优点:底层,执行效率高;

          缺点:编写代码时比较繁琐,尤其是封装结果集的时候;

 DBUtils:基于JDBC,实质是对JDBC进行了简单的封装;

         优点:简化了结果集的封装,仍然是自己书写sql语句,效率和JDBC差不多,引入了池的思想管理连接;

         缺点:要求实体类属性名和数据库中对应的表的字段名称一致,需要记忆的接口和方法较多;

二者共同点:都需要我们自己书写sql语句。

使用JDBC或者DBUtils操作时,表和实体类的关系就是sql语句;!

通常情况下,软件工程的持久层解决方案,一个为主,一个为辅。两者并存(写sql语句和不写sql语句);