一、基本知识
1、Hibernate:一种主流ORM(对象关系映射)框架,是将面向对象映射成面向关系
2、对象关系映射ORM:ORM是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将java程序中的对象自动持久化到关系数据库中。本质上就是将数据从一种形式转换到另外一种形式。
3、使用工具:MyEclipse2017、MySQL8、Navicat12
注:此应用只是java application应用,并未连接Web服务器。只是通过MyEclipse软件将数据写入数据库。若要连接Web服务器,则要应用Struts相关知识
二、具体流程
1、在Hibernate官网下载Hibernate压缩包(因为是外网,所以下载速度很慢)
网址:http://hibernate.org/
2、下载数据库连接的jar包mysql-connector-java-8.0.11(下载与你数据库版本对应的jar包)
3、使用MyEclipse创建新的Web Project,我将其命名为“hibernate_single_table”
4、解压hibernate文件夹
将文件夹路径hibernate-release-5.4.23.Final \hibernate-release-5.4.23.Final\lib\required中的所有jar包和数据库连接的jar包一起复制到MyEclipse项目的WebRoot\WEB-INF\lib中
5、创建数据库login_database和表格people
6、设计表格,让其中一个属性为主键,并且自动递增
7、创建hibernate配置文件——hibernate.cfg.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration
PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- 数据源配置 -->
<!-- 数据库连接信息(数据库用户名,数据库密码,数据库驱动,数据库URL) -->
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
<property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property>
<!-- useUnicode=true;useUnicode=true;characterEncoding=UTF-8;serverTimezone=GMT -->
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/login_database?serverTimezone=GMT</property>
<!-- 数据库方言 -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 打印SQL语句 -->
<property name="show_sql">true</property>
<!-- 格式化SQL语句 -->
<property name="format_sql">true</property>
<!-- 是否自动生成数据表 -->
<property name="hibernate.hbm2ddl.auto"></property>
<!-- 注册实体关系映射文件 -->
<mapping resource="mysql/people.hbm.xml"></mapping>
</session-factory>
</hibernate-configuration>
8、创建持久化类——People.java
package mysql;
public class People {
private int id;
private String name;
private String password;
public void setId(int id) {
this.id=id;
}
public void setName(String name) {
this.name=name;
}
public void setPassword(String password) {
this.password=password;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public String getPassword() {
return password;
}
}
9、 创建类的映射文件——people.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- 映射 -->
<hibernate-mapping>
<class name="mysql.People">
<!-- 设置参数,并将主键id按照递增顺序排列-->
<id name="id">
<generator class="identity"></generator>
</id>
<!-- 设置其他参数 -->
<property name="name"></property>
<property name="password"></property>
</class>
</hibernate-mapping>
10、实体关系映射文件注册到 hibernate的配置文件
只需要添加这条语句到hibernate.cfg.xml
<mapping resource="mysql/people.hbm.xml"></mapping>
注:此行代码在第七步已经添加进hibernate.cfg.xml中,不必重复添加
11、创建测试文件,将实例化对象存到数据库中——Test.java
package test;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import mysql.People;
public class Test {
public static void main(String[] args) throws Exception{
//创建Configuration
Configuration cfg = new Configuration().configure();
System.out.println(cfg);
//获取SessionFactory
SessionFactory sf=cfg.buildSessionFactory();
//获取Session
Session session =sf.openSession();
session.beginTransaction();
//创建实例,并添加到数据库中
People p = new People();
p.setId(001);
p.setName("张三");
p.setPassword("aaa");
//在数据库中保存用户信息
session.save(p);
//session.delete(p);
session.getTransaction().commit();
//关闭session
if(session.isOpen()){
session.close();
}
}
}
12、显示结果