Hibernate+IDEA 2017:记录我的第一个hibernate程序

环境说明:
※Windows 10 OS version 1703
※IDEA 2017.2.3
※JDK 1.8
※MySQL:5.7
※Hibernate:5.2.11

新建项目
首先呢,我们来新建项目,建一个javaweb项目.
Hibernate+IDEA 2017:记录我的第一个hibernate程序_第1张图片

然后往下滑,别点next,你会看到这个
Hibernate+IDEA 2017:记录我的第一个hibernate程序_第2张图片

选中它,你就会看到下面
Hibernate+IDEA 2017:记录我的第一个hibernate程序_第3张图片

那这1,2,3就得说道说道了,
1是指使用本地的Hibernate jar包,
2是指使用idea集成的jar包,
3是指稍后自己手动导入jar包
在这里呢,可以看到idea集成的是2.5.10版本的,截止到发帖时间,最新的hibernate版本是2.5.11,所以,idea里面的可能会有点过时,如果你介意,可以去官网下载最新的jar包,然后选择第一个就行.不介意的话直接选择第二项就好.
那,导入本地jar包导入哪些呢?
Hibernate+IDEA 2017:记录我的第一个hibernate程序_第4张图片
可以看到,在hibernate的lib目录下,有这么多jar包,其实我们只需要导入required里面的就行,也就10个左右.就可以啦.导入完成后,就进入我们的工程界面了.

项目结构
Hibernate+IDEA 2017:记录我的第一个hibernate程序_第5张图片

结构说明
由于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即可.
Hibernate+IDEA 2017:记录我的第一个hibernate程序_第6张图片

结果
Hibernate+IDEA 2017:记录我的第一个hibernate程序_第7张图片
大功告成.

2017/9/18
Lucifer

你可能感兴趣的:(记录)