1.hibernate是什么?
hibernate一个优秀的持久层框架,它封装了JDBC连接数据库的代码,可以去操作数据库,用于数据的增删改查。其核心思想就是:ORM, 即对象关系映射。
2.什么叫做持久层(持久化)?
首先谈一下平时在Java程序中存储数据的方法:通过创建相应的对象保存在其对象的某一个属性中。例如:现在想用Java程序去保存用户名和密码这样一个数据,那么先写一个相对应的Java类:
package com.pojo;
public class User {
private int userid;
private String userName;
private String password;
public int getUserid() {
return userid;
}
public void setUserid(int userid) {
this.userid = userid;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
然后在别的类的代码中导入此类所在的包,并创建一个相对应的对象:
User user = new User();
再去调用此对象的set...()方法,进而把数据存储在对象的相对应的属性中 :
user.setUserName("张三");
user.setPassword("123456");
但是以上方法是通过Java对象保存数据,而一旦Java虚拟机关闭之后,这个数据就会丢失。所以这种数据不叫做持久化数据。
那么持久化数据就是将这些数据永久的保存在磁盘中,进而达到一个“持久”的目的。通常的方式是使用JDBC去连接相对应的数据库,然后将这些数据添加到数据库中。
3.能使用JDBC做的事情,为什么使用hibernate框架?
1)hibernate便于维护,而且它可以完全实现Java程序员使用面向对象编程的思想去完成对数据的操作,使得程序更加便于维护,减小耦合性,使得程序员有更多的心思花在业务逻辑上,而不是这种重复性对的代码。
2)在hibernate没有出现之前,如果某一个项目要换其所使用的数据库的话,需要重新编写sql语句。因为不同的数据库部分sql语句是有差别的(拿SQLServer和mysql中的分页为例)
3)在没有hibernate之前,使用JDBC操作数据库时,sql语句的编写其实是一个比较麻烦的事情(如果没有体会到这一点的话,可能是因为之前你做的项目规模较小,或者说是因为业务逻辑的原因其所用到的sql语句较为简单),而且很容易出错
将软件开发比作成盖房子的话,不用框架的时候,就好像是从房子的承重墙,钢筋混凝土等等开始都要程序员去设计,这些都是你的任务。如果用了框架之后,就好比这个楼现在变成了毛坯房,大框架都已经做好了,你只需要对它进行装修就可以了。这样子的话,就会让程序员有更多的心思花在业务逻辑上,使得产品上线之后给用户带来更好的用户体验。
4. hibernate怎么做到的这一点?
hibernate的核心思想就是:ORM,即对象关系映射
数据库中数据与Java程序中的对象中存储的数据之间的关系:
一张表 --->对应一个Java类
表中一个字段 -->对应Java类中的一个属性
表中的一条记录 --> 对应Java程序中的一个类对象
利用以上数据库中数据与Java程序中的对象中存储的数据之间的关系就做出了两个框架:hibernate和mybatis