使用Maven创建Hibernate5+mysql8,遇到的困难和错误

开始我们的废话连篇阶段,至于我为什么要写这篇博客,简单陈述一下,我之前一直使用的都是hibernate3+MySQL5,所以很多更改的地方我完全不知道,以至于我上网去找就一脸懵逼,好了废话不多说,开始教程,搞起🔨

创建maven项目

首先申明我使用的是eclipse,所以有使用IntelliJ IDEA,那不好意思,等我以后换软件以后更新,第一步当然很简单,那就是创建maven项目,这里废话一下,能看这个博客的一般都会使用maven,如果不会当我没说,你可以看另一篇博客如何创建maven项目/ “百分之百可以运行的简单网络爬虫(一)”)

创建完maven项目的样子如图:链接


会创建maven项目的,可以直接复制下面的pom.xml的代码,也可以直接去我的 GitHub仓库 直接下载

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import pojo.Product;

/**
* hibernate的基本步骤是:
1. 获取SessionFactory
2. 通过SessionFactory 获取一个Session
3. 在Session基础上开启一个事务
4. 通过调用Session的save方法把对象保存到数据库
5. 提交事务
6. 关闭Session
7. 关闭SessionFactory
*/
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();



}
}

创建数据库文件

在数据库中创建表,MySQL的下载安装,百度谷歌一大把,我就不阐述了,用nivacat创建表

也可以用命令行创建,首先准备数据库test create database test; 创建表:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import pojo.Product;

/**
* hibernate的基本步骤是:
1. 获取SessionFactory
2. 通过SessionFactory 获取一个Session
3. 在Session基础上开启一个事务
4. 通过调用Session的save方法把对象保存到数据库
5. 提交事务
6. 关闭Session
7. 关闭SessionFactory
*/
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();



}
}

创建实体类和实体类映射文件

实体类的 getter()和 setter()方法一定要遵循—->>>JavaBean规则<<<—- 否则会报错!!!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import pojo.Product;

/**
* hibernate的基本步骤是:
1. 获取SessionFactory
2. 通过SessionFactory 获取一个Session
3. 在Session基础上开启一个事务
4. 通过调用Session的save方法把对象保存到数据库
5. 提交事务
6. 关闭Session
7. 关闭SessionFactory
*/
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();



}
}

在实体类目录下新建一个配置文件:右键entity -> New -> Other -> General -> File -> Next -> 文件命名:Product.hbm.xml:P一定要大写,要和实体类 Product 保持一致

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import pojo.Product;

/**
* hibernate的基本步骤是:
1. 获取SessionFactory
2. 通过SessionFactory 获取一个Session
3. 在Session基础上开启一个事务
4. 通过调用Session的save方法把对象保存到数据库
5. 提交事务
6. 关闭Session
7. 关闭SessionFactory
*/
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();



}
}

在src类目录下新建一个配置文件:右键src -> New -> Other -> General -> File -> Next -> 文件命名:hibernate.cfg.xml

设置hibernate.cfg.xml文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import pojo.Product;

/**
* hibernate的基本步骤是:
1. 获取SessionFactory
2. 通过SessionFactory 获取一个Session
3. 在Session基础上开启一个事务
4. 通过调用Session的save方法把对象保存到数据库
5. 提交事务
6. 关闭Session
7. 关闭SessionFactory
*/
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();



}
}

创建hibernate测试类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46

```plain
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import pojo.Product;

/**
* hibernate的基本步骤是:
1. 获取SessionFactory
2. 通过SessionFactory 获取一个Session
3. 在Session基础上开启一个事务
4. 通过调用Session的save方法把对象保存到数据库
5. 提交事务
6. 关闭Session
7. 关闭SessionFactory
*/
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();



}
}

## 测试成功图

![链接](/images/2020-09-07_115010.png)

![链接](/images/2020-09-07_115115.png)