Hibernate是什么
Hibernate是一款优秀的持久化ORM框架;解决持久化操作,使得程序员可以从编写繁复的JDBC工作中解放出来,专注于业务,提高程序开发效率;并且具有可靠的移植性,降低了系统的耦合度
持久化
持久化(Persistence),即把数据(如内存中的对象)保持到可以永久保存的存储设备中(如硬盘);
持久化的主要应用是将内存中的数据储存到关系型数据库中,当然也可以储存到磁盘文件中、xml数据文件中等;Hibernate当中叫做加载。
1.狭义概念:数据储存在物理介质不会丢失
2.广义概念:对数据的CRUD操作都叫做持久化
3.加载:Hibernate的概念是数据从数据库加载到session中
ORM
O(OBject),R(Relation),M(Mapping),顾名思义就是对象(JavaBean)关系(关系型数据库)映射。它的作用是在关系型数据库和对象之间做一个映射。这样,我们在具体的操作数据库的时候,就不需要再去和复杂的SQL语句打交道,只要像平时操作对象一样操作它就行了。
对象 | 数据库 |
---|---|
类名 | 表名 |
类的实例 | 表中的一条记录 |
类的属性 | 表的字段 |
public class User implements Serializable {
private Integer id;
private String username;
private String password;
// get, set, 构造器...
}
User user = new User(1, "张三", "111");
create table USER(
ID NUMBER(4) PRIMARY KEY,
USERNAME VARCHAR2(10),
PASSWORD VARCHAR2(8)
);
为什么要做持久化和ORM设计
代码复杂
用JDBC的API编程访问数据库,代码量较大,特别是访问字段较多的表的时候,代码显得繁琐、累赘,容易出错,程序员需要耗费大量的时间、精力去编写具体的数据库访问的SQL语句,还要十分小心其中大量重复的源代码是否有疏漏,并不能集中精力于业务逻辑开发上面。ORM则建立了Java对象与数据库对象之间的影射关系,程序员不需要编写复杂的SQL语句,直接操作Java对象即可,从而大大降低了代码量,也使程序员更加专注于业务逻辑的实现。
数据库连接问题
采用JDBC编程,必须保证各种关系数据之间不能出错,极其痛苦;ORM建立Java对象与数据库对象关系影射的同时,也自动根据数据库对象之间的关系创建Java对象的关系,并且提供了维持这些关系完整、有效的机制。
耦合度
JDBC属于数据访问层,但是使用JDBC编程时,程序员必须知道后台是用什么数据库、有哪些表、各个表有哪些字段、各个字段的类型是什么、表与表之间什么关系、创建了什么索引等等与后台数据库相关的详细信息。相当于软件程序员兼职数据库DBA。使用ORM技术,可以将数据库层完全隐蔽,呈献给程序员的只有Java的对象,程序员只需要根据业务逻辑的需要调用Java对象的Getter和 Setter方法,即可实现对后台数据库的操作,程序员不必知道后台采用什么数据库、有哪些表、有什么字段、表与表之间有什么关系。于是,系统设计人员把ORM搭建好后,把Java对象交给程序员去实现业务逻辑,使持久层与数据库层清晰分界。