Hibernate的简单配置及运行测试

导航

- 导入相关的jar包- 使用Maven- 导入本地的jar包

- 创建数据库以及数据表- 配置Hibernate- 创建实体类User- 为实体类创建user.hdm.xml- 创建hibernate.cfg.xml

- 测试运行- 创建HibernateUtil工具类(非必要)编写测试代码

- IDEA内连接Mysql

- 导入相关的jar包

文件结构:

- 使用Maven

可以使用Maven,在pom.xml中加载配置

src/main/java

**/*.xml

true

src/main/resources

**/*.xml

**/*.properties

mysql

mysql-connector-java

8.0.22

org.hibernate

hibernate-core

5.4.22.Final

org.hibernate.common

hibernate-commons-annotations

5.1.0.Final

使用Maven导入的时候需要注意:

由于Maven,编译的工作是由Maven程序来完成的,而Maven默认只会把src/main/resources文件夹下的文件拷贝到target/classes文件夹下,所以我们在之后创建xxx.hdm.xml时需要放到resourse文件加下,或者在pom.xml中添加相关配置(中的代码)

- 导入本地的jar包

在菜单选择File-Project Structure 选择ProjectSettings下的Libaries,点击“+”号,选择Java 导入Hibernate相关的包。 继续导入mysql相关的包

- 创建数据库以及数据表

create database test;

use test;

create table t_user(

id int(11) not null primary key auto_increment,

name varchar(30) not null,

age int(11) not null

);

insert into t_user values(2,'allwinter',22);

使用IDEA连接数据库进行查看(详细操作后面写)

- 配置Hibernate

- 创建实体类User

package com.allwinter.pojo;

/**

* com.allwinter.pojo

* 2021/5/7

* 19:55

*/

public class User {

private int id;

private String name;

private int age;

public User() {

}

public User(String name, int age) {

this.name = name;

this.age = 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 int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

@Override

public String toString() {

return "User{" +

"id=" + id +

", name='" + name + '\'' +

", age=" + age +

'}';

}

}

- 为实体类创建user.hdm.xml

"-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

- 创建hibernate.cfg.xml

"-//Hibernate/Hibernate Configuration DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

com.mysql.cj.jdbc.Driver

jdbc:mysql://localhost:3306/coursesys?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true

username

passwird

org.hibernate.dialect.MySQLDialect

true

需要注意数据库驱动中mysql5.0与8.0的不同,以及url的不同写法:

5.08.0Drivercom.mysql.jdbc.Drivercom.mysql.cj.jdbc.DriverUrl正常写需要在后面添加serverTimezone(serverTimezone=Asia/Shanghai)

- 测试运行

- 创建HibernateUtil工具类(非必要)

package com.allwinter.utils;

import org.hibernate.*;

import org.hibernate.cfg.Configuration;

/**

* com.allwinter.utils

* 2021/5/7

* 19:09

*/

public class HibernateUtil {

private static SessionFactory sessionfactory;

static {

try{

//实例化SessionFactory;

sessionfactory = new Configuration().configure().buildSessionFactory();

} catch (Throwable e){

System.err.println("SessionFactory 创建失败!" + e);

throw new ExceptionInInitializerError(e);

}

}

public static SessionFactory getSessionfactory(){

return sessionfactory;

}

}

编写测试代码

public static void main(String[] args) {

//使用工具类实例化SessionFactory

SessionFactory sessionfactory = HibernateUtil.getSessionfactory();

//获取Session对象

Session session = sessionfactory.openSession();

//开启事务

Transaction tx = session.beginTransaction();

User user = new User("Yang",22);

session.save(user);

tx.commit();

session.close();

sessionfactory.close();

}

- IDEA内连接Mysql

8.0版本需要在这里设置一下serverTimezone的值