------------------------------------------------------摸索了许久,写个教程记录一下,以后忘了也好重新上手------------------------------------------------------------
------------------------------------------------------已经安装了MySQL的朋友可以直接看后面的 Hibernate配置 --------------------------------------------------------
运行环境:Windows10-64位操作系统
搭载配置:mysql8.0.18+hibernate5.4.10
MySQL官网:MySQL.COM
Windows10-32位:mysql8.0.18
Windows10-64位:mysql8.0.18
Hibernate下载地址:hibernate5.4.10
点击 mysql-32位 mysql-64位 下载链接的如图所示直接下载
其他版本自行官网下载:MySQL.COM
MySQL-8.0.18安装教程
可视化操作工具 Navicat12 下载及安装教程
到这里,MySQL的安装及可视化总算完成了。你可能几分钟就看到这里了,我足足排版了几个小时,哈哈,让自己也看得舒服同时让有缘的看到不至于眼花缭乱
-----------------------------------------------------进行了一系列安装与配置后,下面进行 Hibernate配置----------------------------------------------------------------
整个测试项目包如下所示,分5步讲解:
目录 --->>>可点击直达
1. 为项目导进 hibernate5.4.10 jar 包2. 创建数据库 iphone_product 及实体类 Product.java
3. 创建映射配置文件 Product.hbm.xml
4. 创建Hibernate核心配置文件 hibernate.cfg.xml
5. 创建测试项目 TestHibernate.java
1.1、下载并解压 hibernate5.4.10 -> lib文件夹 -> required文件夹下的所有jar包 -> 导进项目根目录
1.2、导进jar包:右键项目 -> properties -> Java Build Path -> Add External JARS
2.1、打开 Nivacat 创建数据库 iphone_product:
2.2、创建 Product.java实体类:
实体类的 getter()和 setter()方法一定要遵循--->>>JavaBean规则<<<--- 否则会报错!!!
上面的文章是我公众号上写的一篇,具体学习JavaBean请自行百度,因为我也是一脸懵逼,我做项目的时候没有遵守这个规则,愣是差点被搞垮了,后来上网找了半天才查到了原因。顺便记录了一下这个—>>>JavaBean规则<<<—
package entity;
public class Product {
public int id;
public String name;
public float price;
public void setId(int id) {
this.id = id;
}
public int getId() {
return id;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setPrice(float price) {
this.price = price;
}
public float getPrice() {
return price;
}
}
在实体类目录下新建一个配置文件:右键entity -> New -> Other -> General -> File -> Next -> 文件命名:Product.hbm.xml:P一定要大写,要和实体类 Product 保持一致
<?xml version = "1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EM"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!-- 实体类包名,我的是entity,输入自己的项目实体包名即可 -->
<hibernate-mapping package="entity">
<!-- 实体类名及数据库表名 -->
<class name = "Product" table = "product">
<!-- 实体类属性id映射数据库表里的id -->
<id name = "id" column = "id">
<!-- <generator class="native"> 意味着id的自增长方式采用数据库的本地方式 -->
<generator class = "native"/>
</id>
<property name="name" column="name"></property>
<property name="price" column="price"></property>
</class>
</hibernate-mapping>
4.1 、在src类目录下新建一个配置文件:右键src -> New -> Other -> General -> File -> Next -> 文件命名:hibernate.cfg.xml
4.2、配置 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>
<!-- Database connection setting -->
<property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property>
<!-- 由于采用的是mysql8,在url配置上要加入属性信息 ?useSSL=false&serverTimezone=Asia/Shanghai -->
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/iphone_product?useSSL=false&serverTimezone=GMT</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">xxx替换自己的数据库密码xxx</property>
<!-- SQL dialect -->
<!--方言的配置要使用MySQL8Dialect,如果是MySQLDialect就无法自动创建表 -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQL8Dialect</property>
<property name="current_session_context_class">thread</property>
<!-- 这表示是否在控制台显示执行的SQL语句 -->
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property>
<!-- 自动更新表结构,没有表也会自动创建 -->
<property name="hibernate.hbm2ddl.auto">update</property>
<mapping resource="entity/Product.hbm.xml"/>
</session-factory>
</hibernate-configuration>
5.1 、Hibernate测试
package test;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import entity.Product;
public class TestHibernate {
public static void main(String[] args) {
//1、加载Hibernate的核心配置文件:hibernate.cfg.xml
Configuration configuration = new Configuration().configure();
//2、创建一个SessionFactory对象:类似于JDBC中的连接池
SessionFactory sessionFactory = configuration.buildSessionFactory();
//3、通过SessionFactory获取Session对象:类似JDBC中的Connection
Session session = sessionFactory.openSession();
//4、手动开启事务
Transaction transaction = session.beginTransaction();
//5、编写代码
for (int i = 1; i <=10; i++) {
Product p = new Product();
p.setName("iphone"+i);
p.setPrice(1000*i);
session.save(p);
}
//6、事务提交
transaction.commit();
//7、资源释放
session.close();
sessionFactory.close();
}
}
测试成功