版本信息:
Hibernate:5.8.0
MySQL:8.0.21
项目结构:
步骤:
1.导入相关jar包
解压缩hibernate压缩包之后,相关jar包目录如下,将目录下的所有jar包导入到项目中(导入的位置不固定,可以自己创建一个文件夹用来存放导入的jar包)
除此之外还需要导入的jar包
1). 连接MySQL的jar包
2). javaee-api-7.0.jar
当导入的jar包显示如下时:
此时只是将jar包复制到了项目中,但没有将jar包添加到构建路径中,继续执行操作
选中所有jar包,右击选择Build Path选择Add to Build Path,导入成功后显示如下:
2.创建相关配置文件
1)实体类映射文件User.hbm.xml
文件名不固定,可以随便命名,位置固定
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<!-- name是实体类路径(包名.类名) table是数据表名称 -->
<class name="user.User" table="user_info">
<!-- 实体类中要有一个唯一属性 数据表中也要有一个唯一列 -->
<!-- name表示实体类中的唯一属性 column表示数据表中的唯一列 -->
<!-- name表示实体类中的属性名 colum表示数据表的列名 可以省略 默认和name相同 -->
<id name="Id" column="Id">
<!-- 设置数据表的Id为主键 自动增长 -->
<generator class="native"></generator>
</id>
<!-- 配置实体类中的其他属性和数据表的映射 -->
<!-- name表示实体类中的属性名 colum表示数据表的列名 可以省略 默认和name相同 -->
<property name="Name" column="Name"></property>
<property name="Age" column="Age"></property>
<property name="Address" column="Address"></property>
</class>
</hibernate-mapping>
配置的全部都是实体类中属性的映射
2)hibernate核心配置文件hibernate.cfg.xml
文件名固定,位置固定
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- 1.配置数据库信息 必须配置-->
<!-- 数据库驱动 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- 数据库url -->
<property name="hibernate.connection.url">jdbc:mysql:///hibernate?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai</property>
<!-- 数据库用户名 -->
<property name="hibernate.connection.username">root</property>
<!-- 数据库密码 -->
<property name="hibernate.connection.password">root</property>
<!-- 2.配置hibernate信息 可选 -->
<!-- 输出底层SQL语句 -->
<property name="hibernate.show_sql">true</property>
<!-- 格式化SQL语句 -->
<property name="hibernate.format_sql"></property>
<!-- 自动创建表 -->
<!-- update : 如果已经有相同名称的表则更新 若没有则创建 -->
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- 配置方言 识别不同数据库关键字 -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
<!-- 3.添加映射文件 必须配置-->
<mapping resource="user/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
3.创建实体类User.java及其属性的set和get方法
package user;
public class User {
private int Id;
private String Name;
private int Age;
private String Address;
public int getId() {
return Id;
}
public void setId(int id) {
Id = id;
}
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public int getAge() {
return Age;
}
public void setAge(int age) {
Age = age;
}
public String getAddress() {
return Address;
}
public void setAddress(String address) {
Address = address;
}
}
4.创建测试类HibernateDemo.java
package hibernate;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import user.User;
public class HibernateDemo {
public static void main(String[] args) {
// 1.创建configuration对象
// 获取src目录下的核心配置文件hibernate.cfg.xml 将文件放到创建的configuration对象中 也可以概括为 加载核心配置文件
// 获取的核心配置文件是固定的 如果核心配置文件名称与要求的不一致 则无法获取
Configuration configuration = new Configuration().configure();
// 2.创建sessionFactory对象
// 读取映射文件和实体类 并创建数据库
SessionFactory sessionFactory = configuration.buildSessionFactory();
// 3.创建session对象
// 执行SQL的增删改查
Session session = sessionFactory.openSession();
// 4.开启事务
// 获取事务对象 可以提交事务或回滚事务
org.hibernate.Transaction tx = session.beginTransaction();
// 5.数据库操作
// 通过操作实体类来改变数据库中的值
// 添加数据
User user = new User();
// 因为Id列为自动增长 所以可以不用添加
user.setName("王五");
user.setAge(17);
user.setAddress("东北");
// 调用session的save方法实现添加
session.save(user);
// 6.提交事务
tx.commit();
// 7.关闭资源
session.close();
sessionFactory.close();
}
}
如果核心配置文件中配置了自动创建表,那在执行测试类之前只需要创建好数据库就可以,在执行时,hibernate会为你自动创建指定的表
我将hibernate压缩文件和所需要的jar包整理了下放到这,有需要的可以去取
hibernate压缩文件及相关jar包获取地址:https://pan.baidu.com/s/18NhE-EnPMrpIgNr8JnK8zg
提取码:pk6w