Hibernate框架-Hinernate的概述及环境搭建
简介:整理了一下学习的知识,加深记忆。
Hibernate的概述
Hibernate是一个开源的ORM框架,它对JDBC进行了轻量级的对象封装,使得Java开发人员可以使用面向对象的编程思想来操作数据库。
Hibernate框架是Java持久层框架之一,由于它具有简单易学、灵活性强、扩展性强的特点,能够大大地简化程序的代码量,提高工作效率。
我们再来看看百度百科的介绍:
ORM:所谓的ORM就是利用描述对象和数据库表之间的映射的元数据,自动把Java应用程序中的对象持久化到关系型数据库的表中。通过操作java对象,就可以完成对数据库表的操作。其原理图如下:
再来说说Hibernate相对于其他操作数据库的技术的优点吧
- Hibernate对JDBC访问数据库的代码做了轻量封装,大大简化了数据访问层(DAO层)繁琐的重复性代码,并且减少了内存消耗,提高了运行的效率。
- 性能好,映射的灵活性性强,支持多数关系型数据库,从一对一到多对多的各种复杂关系。
- 可扩展性强,开源。
Hibernate的搭建
- 下载Hibernate,这里以Hibernate5为例。附上链接:
https://sourceforge.net/projects/hibernate/files/hibernate-orm/5.0.7.Final/ - 解压到你所需的目录下,进入lib目录下的required文件夹,这里是hibernate运行项目必须包含的jar包。
- 新建一个web项目,将required文件夹的所有jar包以及数据库驱动包(下图中为mysql的包)放入到WebContent/WEB-INF/lib目录下:
- 创建数据库,准备实体(如下图),表(可有可无,下面会说到)。
public class User {
private String user_name;
private Integer user_id;
private String user_code;
private String user_password;
public String getUser_name() {
return user_name;
}
public void setUser_name(String user_name) {
this.user_name = user_name;
}
public Integer getUser_id() {
return user_id;
}
public void setUser_id(Integer user_id) {
this.user_id = user_id;
}
public String getUser_code() {
return user_code;
}
public void setUser_code(String user_code) {
this.user_code = user_code;
}
public String getUser_password() {
return user_password;
}
public void setUser_password(String user_password) {
this.user_password = user_password;
}
}
- 书写orm元数据(对象与表的映射配置文件)
-新建一个txt文件在你想要的目录下,打开在项目中的路径为Libraries/Web App Libraries/hibernate-core-5.0.7.Final.jar/hibernate-mapping-3.0.dtd的文件,复制所有内容到txt文件中,保存后将文件名改为hibernate-mapping-3.0.dtd
- 导入约束Windows/Preferences/XML/XML Catalog,点击add,选择Catalog Entry 点击File System,然后选择刚才创建的dtd文件。Key type中选择URl,Key输入http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd(这个在文件中有)
- 配置表与实体对应关系
1、新建一个XML文件,改名为User.hbm.xml (命名最好为[实体的类名.hbm.xml],这样当存在多个实体的时候容易区分),由于插入代码块的格式有问题,所以内容及解释就直接放图了:
- 书写主配置文件
在src目录下新建一个xml文件,命名为hibernate.cfg.xml,内容如下
到这里,基本的配置就弄好了,接下来只要创建一个测试类测试是否配置成功就可以了。
- 代码测试(关于涉及到的API会在下节讲解)
//测试hibenate框架
public class Damo {
@Test
public void fun() {
//创建,调用空参构造
Configuration conf = new Configuration().configure();
//根据配置信息,创建SessionFactory对象
SessionFactory sessionFactory=conf.buildSessionFactory();
//获得session
Session session=sessionFactory.openSession();
//打开事务
Transaction tx = session.beginTransaction();
//-------------------------
User user=new User();
user.setUser_name("张三");
user.setUser_password("1234");
session.save(user);//执行保存
//--------------------------
//关闭事务
tx.commit();
session.close();
sessionFactory.close();
//最后查看数据库中是否添加了该记录
}
}