持久化:只是将数据保存在可掉电的存储介质上。
持久层:可以将业务数据存储到磁盘,具备长期存储能力,只要磁盘不损坏(大部分的重要数据都会有相关的备份机制),在断电或者其他情况下,重新开启系统仍然可以读取这些数据。
Java中使用JDBC技术(JDBC是规范,不是框架)
目前流行的编程语言,如Java\C++\C#等,他们都是面向对象的编程语言,它具有非常多的优势,比如:
目前主流的数据库产品,如Oracle,DB2,MySQL,SQLServer等几乎都是关系型数据库,关系型数据的优势:
这样我们需要有一个(面向)对象和关系(数据库)之间的映射,作为桥梁的ORM框架就产生了。
采用ORM框架之后,应用程序不再直接访问底层的数据库,而是以面向对象的方式来操作持久化对象(PO),而ORM框架负责将这些面向对象的操作转换成底层的SQL操作。
ORM框架把持久化对象的保存、删除、修改等操作转换成对数据库的SQL操作。
基本映射方式:
基于这种基本映射方式,ORM框架可以完成对象模型和关系模型的相互映射。
开发者只需要操作持久化类对象,无需关心底层的数据库SQL操作,将开发和数据库操作都转化成面向对象的操作,工作量和复杂度大为减少。
流行的ORM框架:
MyBatis 是一个支持普通MySQL查询、存储过程和高级映射的优秀持久层框架。
MyBatis与众多ORM框架具有以下优势:
MyBatis与Hibernate对比
Hibernate | MyBatis |
---|---|
Hibernate是一个全表映射的框架 | MyBatis是一个半自动映射的框架 |
通常开发者只需定义好持久化对象到数据表的映射关系,就可以通过Hibernate提供的方法完成持久化操作 | "半自动"是相对于Hibernate全表映射而言的,MyBatis需要手动匹配提供POJO,SQL和映射关系即可 |
开发者并不需要熟练的掌握SQL语句的编写,Hibernate会根据制定的存储逻辑,自动的生成对应的SQL,并调用JDBC接口来执行,所以开发效率也会高于MyBatis | 与Hibernate相比,虽然使用MyBatis手动编写SQL要比使用Hibernate的工作量大,但MyBatis可以配置动态SQL并优化SQL,可以通过配置决定SQL的映射规则,它还支持存储过程等。对于一些复杂的和需要优化性能的项目来说,显然使用MyBatis更加合适 |
Hibernate也存在一些缺点,例如它在多表关联时,对SQL查询的支持较差;更新数据时,需要发送所有字段;不支持存储过程;不能通过优化SQL来优化性能等 |