MySQL 如何将Hibernate连接到MySQL数据库?

MySQL 如何将Hibernate连接到MySQL数据库?

阅读更多:MySQL 教程

简介

Hibernate是Java语言的一种面向对象的关系数据库映射框架,它可以将POJO(Plain Old Java Object)映射到关系数据库中。Hibernate有着良好的扩展性、稳定性以及性能,在Java开发中被广泛应用。

MySQL是一个流行的开源关系型数据库管理系统,被广泛应用于Web开发中。在使用Hibernate框架时,我们通常需要连接到一个数据库,本篇文章将介绍如何使用Hibernate连接到MySQL数据库。

准备工作

在开始连接MySQL数据库之前,我们需要做以下准备工作:

  1. 下载并安装MySQL数据库,并启动MySQL服务。
  2. 在MySQL数据库中创建一个数据库和一个表,作为Hibernate连接的目标数据源。以下是创建表的示例:
CREATE DATABASE hibernate_test;
USE hibernate_test;
CREATE TABLE employee (
  id int(11) NOT NULL AUTO_INCREMENT,
  name varchar(50) DEFAULT NULL,
  age int(11) DEFAULT NULL,
  salary double DEFAULT NULL,
  PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

导入依赖

在使用Hibernate连接MySQL数据库之前,我们需要导入一些依赖。以下是常用的Hibernate和MySQL的依赖配置:

<dependencies>
    <!-- Hibernate 依赖-->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>5.5.6.Final</version>
    </dependency>

    <!--MySQL 依赖-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.26</version>
    </dependency>

    <!--JPA 依赖-->
    <dependency>
        <groupId>javax.persistence</groupId>
        <artifactId>javax.persistence-api</artifactId>
        <version>2.2</version>
    </dependency>
</dependencies>

配置Hibernate连接MySQL

创建Hibernate连接MySQL数据库的步骤如下:

  1. 新建一个Java类,用于定义Hibernate配置。以下是配置的基础内容:
import org.hibernate.cfg.Configuration;

public class HibernateUtil {
    private static final SessionFactory SESSION_FACTORY = buildSessionFactory();

    private static SessionFactory buildSessionFactory() {
        try {
            Configuration configuration =
                    new Configuration().configure().addAnnotatedClass(Employee.class);

            return configuration.buildSessionFactory();
        } catch (Throwable e) {
            System.err.println("Failed to create sessionFactory object." + e);
            throw new ExceptionInInitializerError(e);
        }
    }

    public static SessionFactory getSessionFactory() {
        return SESSION_FACTORY;
    }
}
  1. 创建一个Java类,用于定义数据表映射(即POJO类)。以下是一个简单的Employee类:
import javax.persistence.*;

@Entity
@Table(name = "employee")
public class Employee {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private int id;

    @Column(name = "name")
    private String name;

    @Column(name = "age")
    private int age;

    @Column(name = "salary")
    private double salary;

    public Employee() {
    }

    public Employee(String name, int age, double salary) {
        this.name = name;
        this.age = age;
        this.salary = salary;
    }

    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;
    }

    public double getSalary() {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }
}
  1. 在Hibernate配置文件中配置MySQL数据库的连接参数。以下是一个典型的Hibernate配置文件示例:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate Configuration DTD//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
    <session-factory>
        <!-- 数据库连接参数 -->
        <property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_test?serverTimezone=UTC</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">123456</property>

        <!-- Hibernate配置参数 -->
        <property name="hibernate.dialect">org.hibernate.dialect.MySQL8Dialect</property>
        <property name="hibernate.show_sql">true</property>
        <property name="hibernate.hbm2ddl.auto">update</property>

        <mapping class="com.example.model.Employee"/>
    </session-factory>
</hibernate-configuration>

在配置文件中,需要配置Hibernate所使用的MySQL驱动、连接URL、用户名、密码、方言(即SQL方言)、是否显示SQL语句、以及自动创建数据表的选项等。

测试Hibernate连接MySQL

当我们完成以上配置后,我们可以编写一个简单的Java类,来测试Hibernate是否能够成功连接到MySQL数据库。以下是一个典型的测试类:

import com.example.model.Employee;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.query.Query;

public class App {
    public static void main(String[] args) {
        SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
        Session session = sessionFactory.openSession();
        Transaction transaction = session.beginTransaction();

        // 创建 Employee 对象
        Employee employee = new Employee("Tom", 28, 8000.0);

        // 将 Employee 对象保存到数据库中
        session.save(employee);

        // 从数据库中查询所有的 Employee 信息
        Query query = session.createQuery("from Employee");
        for (Object obj : query.list()) {
            System.out.println(obj.toString());
        }

        // 提交事务
        transaction.commit();

        // 关闭Session和SessionFactory
        session.close();
        sessionFactory.close();
    }
}

在测试类中,我们创建了一个Employee对象,并将其保存到数据库中。然后从数据库中查询了所有的Employee信息,并输出到控制台上。

如果一切配置正确,当我们运行测试类时,我们可以在控制台上看到以下类似的输出:

Hibernate: insert into employee (age, name, salary) values (?, ?, ?)
Hibernate: select employee0_.id as id1_0_, employee0_.age as age2_0_, employee0_.name as name3_0_, employee0_.salary as salary4_0_ from employee employee0_
Employee{id=1, name='Tom', age=28, salary=8000.0}

这表示Hibernate成功将Employee对象保存到数据库中,并从数据库中查询出了所有的Employee信息。

结论

通过本篇文章的学习,我们了解了如何使用Hibernate连接到MySQL数据库。我们通过导入依赖、配置连接参数和测试连接三个步骤,完成了连接MySQL数据库的过程。希望本文可以帮助到你,祝你学习愉快!

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程