环境说明:
※Windows 10 OS version 1703
※IDEA 2017.2.3
※JDK 1.8
※MySQL:5.7
※Hibernate:5.2.11
新建项目
首先呢,我们来新建项目,建一个javaweb项目.
那这1,2,3就得说道说道了,
1是指使用本地的Hibernate jar包,
2是指使用idea集成的jar包,
3是指稍后自己手动导入jar包
在这里呢,可以看到idea集成的是2.5.10版本的,截止到发帖时间,最新的hibernate版本是2.5.11,所以,idea里面的可能会有点过时,如果你介意,可以去官网下载最新的jar包,然后选择第一个就行.不介意的话直接选择第二项就好.
那,导入本地jar包导入哪些呢?
可以看到,在hibernate的lib目录下,有这么多jar包,其实我们只需要导入required里面的就行,也就10个左右.就可以啦.导入完成后,就进入我们的工程界面了.
结构说明
由于Hibernate是持久化数据到数据库中的,所以还需要导入你的数据库的驱动jar包.
为什么hibernate里没有数据库驱动jar包呢?因为数据库种类不一,所以呢,就没有放入,根据自己的实际情况导入相应的jar包即可.我这里导入的是mysql的驱动.
还有一个就是单元测试jar包.用来进行单元测试.我这里的版本是4.12
config文件夹是放hibernate的全局配置文件
Student类是实体类
Student.hbm是Student的映射配置文件
HibernateTest是单元测试类
项目代码
hibernate.cfg.xml
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driverproperty>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_test?charset=UTF-8property>
<property name="hibernate.connection.username">rootproperty>
<property name="hibernate.connection.password">4187Qsx-iproperty>
<property name="hibernate.dialect">org.hibernate.dialect.MySQL57Dialectproperty>
<property name="hibernate.hbm2ddl.auto">updateproperty>
<property name="hibernate.show_sql">trueproperty>
<property name="hibernate.format_sql">trueproperty>
<mapping resource="com/cs/qsx/bean/Student.hbm.xml" />
session-factory>
hibernate-configuration>
Student.class
package com.cs.qsx.bean;
public class Student {
/**
* 包名: com.cs.qsx.bean
* 类名: Student
* 类描述: 用于生成关系表的实体类
* 作者: Lucifer
* 创建日期: 2017/9/18
* 创建时间: 11:39
*
**/
private int id;
private String name;
private String gender;
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", gender='" + gender + '\'' +
", age=" + age +
'}';
}
}
***Student.hbm.xml
<hibernate-mapping package="com.cs.qsx.bean">
<class name="Student">
<id name="id">
<generator class="native"/>
id>
<property name="name"/>
<property name="gender" />
<property name="age" />
class>
hibernate-mapping>
HibernateTest.class
package com.cs.qsx.test;
import com.cs.qsx.bean.Student;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.junit.Test;
public class HibernateTest {
/**
* 包名: com.cs.qsx.test
* 类名: HibernateTest
* 类描述: 测试hibernate的一个单元测试类
* 作者: Lucifer
* 创建日期: 2017/9/18
* 创建时间: 11:59
*
**/
/*
单元测试类的几个基本要求:
1.必须要有@Test注解
2.返回值为空
3.没有形参
*/
@Test
public void testHibernate(){
//1.加载全局配置文件
Configuration configuration = new Configuration().configure();
//2.获取session工厂
SessionFactory sessionFactory = configuration.buildSessionFactory();
//3.创建session对象
Session session = sessionFactory.openSession();
//4.操作数据
Student student = new Student();
student.setAge(10);
student.setName("楚南");
student.setGender("男");
System.out.println("保存成功:" + session.save(student));
//5.关闭session
session.close();
}
}
Bug说明
1.双击运行测试方法,出现bug:
java.lang.ClassNotFoundException: org.hamcrest.SelfDescribing
说明:上网搜索了一下,这是因为在junit4.12中没有hamcrest包了.
解决办法:下载 hamcrest-core-1.3.jar导入或者使用junit4.8.因为在4.10以上的junit中没有这个包了
2.好了,导入这个jar包后,再次双击运行,出现这个bug
org.hibernate.internal.util.config.ConfigurationException: Could not locate cfg.xml resource [hibernate.cfg.xml]
说明:没找到这个配置文件
解决办法:那是因为新建的config文件夹是普通文件夹,无法找到.需要将config文件夹变成资源文件夹即可.
步骤如下:
2.1 File–>Project Structure–>Modules
2.2 如图,修改config文件夹的类型,右键config,选择sources即可.
2017/9/18
Lucifer