ORM框架是对JDBC的封装,从而解决了JDBC中存在的各种问题:
1)繁琐的代码问题
用JDBC的API编程访问数据库时,代码量较大,特别是访问字段较多的表的时候,代码显得尤其繁琐,容易出错。般情况下,程序员需要耗费大量的时间和精力去编写具体的数据库访问SQL语句,还要十分小心其中大量重复的源代码是否有疏漏,而不能集中精力于业务逻辑的开发。
ORM则建立了Java对象与数据库对象之间的映射关系,程序员不需要编写复杂的SQL语句,直接操作Java对象即可,从而大大降低了代码量,也使程序员更加专注于业务逻辑的实现。
2)数据库对象连接问题
关系数据对象之间存在各种关系,包括1对1、1对多、多对1、多对多、级联等。在数据库对象更新的时候,如果采用JDBC编程,程序员必须十分小心地处理这些关系,以保证维持这些关系不会出现错误,而这是个很痛苦的过程。
ORM建立Java对象与数据库对象关系映射的同时,也自动根据数据库对象之间的关系创建Java对象的关系,并是提供了维持这些关系的完整、有效的机制。
3)系统架构问题
现在的应用系统般由表示层、业务逻辑层、数据访问层、数据库层等组成,各层次的功能划分得非常清晰。JDBC属于数据访问层,但是使用JDBC编程时,程序员必须知道后台使用了什么数据库、有哪些表、各个表有哪些字段、各个字段的类型是什么、表与表之间是什么关系、创建了什么索引等与后台数据库相关的详细信息,相当于软件程序员兼职数据库(DBA)。
使用ORM技术,可以将数据库层完全隐蔽,呈献给程序员的只有Java的对象,程序员只需根据业务逻辑的需要调用Java对象的Getter和Setter方法,即可实现对后台数据库的操作,程序员不必知道后台采用什么数据库、有哪些表、有什么字段、表与表之间有什么关系。
于是,系统设计人员在搭建好ORM后,将Java对象交给程序员去实现业务逻辑,使数据访问层与数据库层清晰分界。
4)性能问题
采用JDBC编程,在很多时候存在效率低下的问题。采用ORM技术后,ORM框架将根据具体数据库操作需要,会自动延迟向后台数据库发送SQL请求,当所有操作完成后,—次向数据库发送操作请求,从而大大降低通信量,提高运行效率。ORM也可以根据实际情况,将数据库访问操作合成,以尽量减少不必要的数据库操作请求。