ORM
对象关系映射( Object Relational Mapping,简称 ORM ),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。
一般的ORM包括以下四部分:
一个对持久类对象进行CRUD操作的API;
一个语言或API用来规定与类和类属性相关的查询;
一个规定mapping metadata的工具;
一种技术可以让ORM的实现同事务对象一起进行dirty checking, lazy association fetching以及其他的优化操作。
优势:
提高了开发效率。由于ORM可以自动对Entity对象与数据库中的Table进行字段与属性的映射,所以我们实际可能已经不需要一个专用的、庞大的数据访问层。
ORM提供了对数据库的映射,不用SQL直接编码,能够像操作对象一样从数据库获取数据。
MyBatis 是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射与其它ORM框架不同,MyBatis没有将Java对象与数据表关联起来,
而是作为Java方法和SQL语句的桥梁,我们一般称它为半ORM框架。
MyBatis是一个半自动映射的框架。
“半自动”是相对于Hibernate全表映射而言的,MyBatis需要手动匹配提供POJO、SQL和映射关系,而Hibernate只需提供POJO和映射关系即可。
与Hibernate相比,虽然使用MyBatis手动编写SQL要比使用Hibernate的工作量大,但MyBatis可以配置动态SQL并优化SQL,可以通过配置决定SQL的映射规则,它还支持存储过程等。
对于一些复杂的和需要优化性能的项目来说,显然使用MyBatis更加合适。
Hibernate是一个全表映射的框架。
通常开发者只需定义好持久化对象到数据库表的映射关系,就可以通过Hibernate提供的方法完成持久层操作。
开发者并不需要熟练的掌握SQL语句的编写,Hibernate会根据制定的存储逻辑,自动的生成对应的SQL,并调用JDBC接口来执行,所以其开发效率会高于MyBatis。
Hibernate也存在一些缺点,例如它在多表关联时,对SQL查询的支持较差;更新数据时,需要发送所有字段;不支持存储过程;不能通过优化SQL来优化性能等。