认识ORM
ORM, Object-Relationl Mapping,对象关系映射。它的作用是在关系型数据库和对象之间作一个映射。
可以在对象模型和关系型数据库的表之间建立一座桥梁,程序员使用 API 直接操作 JavaBean 对象就可以实现数据的存储、查询、更改和删除等操作。
常用ORM框架:
1. Hibernate
Hibernate是一个全表映射的框架(全自动)。开发者只要定义好持久化对象到数据库表的映射关系,就可以通过 Hibernate 框架提供的方法完成持久层操作。开发者并不需要熟练地掌握 SQL 语句的编写,Hibernate 框架会根据编制的存储逻辑,自动生成对应的 SQL,并调用 JDBC 接口来执行。
2. MyBatis
MyBatis是一个半自动ORM
框架,MyBatis仅有基本的字段映射,仍然需要通过手写SQL来实现和管理。
MyBatis本是Apache的一个开源项目iBatis,2010年这个项目有Apache Software Foundation 迁移到了 Google Code,切改名为 MyBatis。2013年11月迁移到GitHub。
MyBatis 是一款秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录.
3. MyBatis与Hibernate的对比
MyBatis需要手写SQL语句,半自动化ORM,工作量大于Hibernate,为什么比全自动的Hibernate还受欢迎 ?
Hibernate 学习门槛高,要精通门槛更高,而且怎么设计O/R映射,在性能和对象模型之间如何权衡取得平衡,以及怎样用好Hibernate需要开发者的经验和能力都很强才行。
1.生成复杂的sql语句很难实现,或者实现后导致性能丢失。
2.对数据库特定sql优化时,不友好。
3.处理复杂的业务数据时,尤其是级联查询的时候,会导致数据查询和加载很慢。自身也存在一些缺点导致其只适合在场景不太复杂且对性能要求不高的项目中使用。
MyBatis入门简单,上手快。
1.正是由于半自动化自定义SQL,所以比较灵活,可以更加精确的定义SQL。
2.SQL写在XML里,从程序代码中彻底分离,降低耦合度,便于统一管理和优化。
3.便于程序升级迭代。
同样功能的两条sql语句的性能可能相差十几倍到几十倍,在高并发、快响应要求下的互联网系统中,手写SQL更合适.
总之:
因为MyBatis具有相对轻量级,封装少,映射多样化、支持存储过程、可以进行SQL语句优化等特点,符合互联网高并发、大数据、高性能、高响应的要求,使它取代了Hibernate成为了Java互联网中首选的持久框架。而对于性能要求不高的比如内部管理系统、ERP等可以使用Hibernate.