MySQL 如何将Hibernate连接到MySQL数据库?
阅读更多:MySQL 教程
简介
Hibernate是Java语言的一种面向对象的关系数据库映射框架,它可以将POJO(Plain Old Java Object)映射到关系数据库中。Hibernate有着良好的扩展性、稳定性以及性能,在Java开发中被广泛应用。
MySQL是一个流行的开源关系型数据库管理系统,被广泛应用于Web开发中。在使用Hibernate框架时,我们通常需要连接到一个数据库,本篇文章将介绍如何使用Hibernate连接到MySQL数据库。
准备工作
在开始连接MySQL数据库之前,我们需要做以下准备工作:
- 下载并安装MySQL数据库,并启动MySQL服务。
- 在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数据库的步骤如下:
- 新建一个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;
}
}
- 创建一个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;
}
}
- 在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数据库的过程。希望本文可以帮助到你,祝你学习愉快!