Hibernate项目创建流程(IDEA版)

1年前 (2024-04-27)
本节我们将演示如何搭建一个 Hibernate 工程。

搭建 Hibernate 工程需要以下 7 步:

  1. 下载 Hibernate 开发包

  2. 新建工程

  3. 创建数据库表

  4. 创建实体类

  5. 创建映射文件

  6. 创建 Hibernate 核心配置文件

  7. 测试

1. 下载 Hibernate 开发包

浏览器访问 Hibernate 官网 下载 Hibernate(以 hibernate-release-5.5.3.Final 为例)开发包。

目录介绍

下载完成后,解压 hibernate-release-5.5.3.Final.zip,可得到以下目录结构。

图1:Hibernate 目录结构图


Hibernate 文件夹中,包含以下 3 个目录:

  • documentation:Hibernate 的开发文档;

  • lib:Hibernate 相关的依赖;

  • project:Hibernate 官方给出的示例工程。


在 lib 目录下有一个 required 文件夹,其中包含了 Hibernate 5 必须依赖的 jar 包,如下图。


图2:Hibernate 必须 jar 包

2. 新建工程

1. 以 IntelliJ IDEA 为例,新建一个名为 hibernate-demo 的 Java 工程,并在该项目根目录下新建一个 lib 目录,如下图。

IDEA 新建 java 工程

图3:新建 java 项目


2. 将 required 目录中的所有 jar 包拷贝到 Hibernate 工程下的 lib 目录中,除此之外,为了与数据库进行连接,我们还需要下载 MySQL 数据库驱动程序和 junit 的 Jar 包,并将它们都拷贝到 lib 目录中,如下图。

IDEA Hibernate 依赖包

图4:IDEA Hibernate 依赖包


3. 在 IDEA 上方的菜单栏点击 File,选择 Project Structure...,进入工程结构视图。


图5:Project Structure


4. 在工程结构视图左侧选中 Modules,点击右侧的 Dependencise 标签,并点击该标签页下方的“+”,选择“JARs or Directories...” ,如下图。

  

图6:工程结构依赖视图


5. 在弹出的“Attach Files or Directories”视图中,选择 hibernate-demo 工程下的 lib 目录,然后点击 OK 按钮,如下图。


图7:Attach Files or Directories


6. 返回 Dependencise 页后可以看到,lib 目录中依赖已经引入到了该工程之中,点击下方的 Apply 按钮保存,再点击 OK 按钮,如下图。


图8:保存配置

3. 创建数据库表

执行以下 SQL 语句,在 bianchengbang_jdbc 数据库中创建 user 表,并向该表中添加测试数据。

DROP TABLE IF EXISTS `user`;

CREATE TABLE `user` (

`id` int NOT NULL AUTO_INCREMENT,

`user_id` varchar(255) DEFAULT NULL,

`user_name` varchar(255) DEFAULT NULL,

`password` varchar(255) DEFAULT NULL,

`email` varchar(255) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

INSERT INTO `user` VALUES ('1', '001', 'admin', 'admin', '12345678@q网站站点" rel="nofollow" />

package net.biancheng.www.po;

/**

* 实体类

* 与 bianchegnbang_jdbc 数据库中的 user 表对应

*/

public class User {

private int id;

private String userId;

private String userName;

private String password;

private String email;

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getUserId() {

return userId;

}

public void setUserId(String userId) {

this.userId = userId;

}

public String getUserName() {

return userName;

}

public void setUserName(String userName) {

this.userName = userName;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

public String getEmail() {

return email;

}

public void setEmail(String email) {

this.email = email;

}

@Override

public String toString() {

return "net.biancheng.www.po.User{" +

"id=" + id +

", userId='" + userId + '\'' +

", userName='" + userName + '\'' +

", password='" + password + '\'' +

", email='" + email + '\'' +

'}';

}

}

5. 创建映射文件

单单一个实体类 User 是不具备持久化操作的能力的,为了使该类具备这种能力,就需要将 User 实体类映射到数据库的某一张表中,并将实体类中的属性与数据表的字段相对应,这些都需要在映射文件中配置。

Hibernate 的映射文件的名规则如下:

[实体类名].hbm.xml

例如,实体类 User 的映射文件就可以名为 User.hbm.xml。

在 net.biancheng.www.mapping 包下,创建 User 的映射文件 User.hbm.xml,配置如下。

<?xml version='1.0' encoding='utf-8'?>

<!DOCTYPE hibernate-mapping PUBLIC

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

"http://www.hibernate网站站点" rel="nofollow" />

<?xml version='1.0' encoding='utf-8'?>

<!DOCTYPE hibernate-configuration PUBLIC

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

"http://www.hibernate网站站点" rel="nofollow" />

package net.biancheng.www.test;

import net.biancheng.www.po.User;

import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.Transaction;

import org.hibernate.cfg.Configuration;

import org.hibernate.query.Query;

import org.junit.Test;

import java.util.List;

public class MyTest {

/**

* 查询数据库数据

*/

@Test

public void testQuery() {

//Hibernate 加载核心配置文件(有数据库连接信息)

Configuration configuration = new Configuration().configure();

//创建一个 SessionFactory 用来获取 Session 连接对象

SessionFactory sessionFactory = configuration.buildSessionFactory();

//获取session 连接对象

Session session = sessionFactory.openSession();

//开始事务

Transaction transaction = session.beginTransaction();

    //根据主键查询 user 表中的记录

    User user = session.get(User.class, 1);

    System.out.println(user);

    //提交事务

    transactio网站站点" rel="nofollow" />

七月 19, 2021 12:24:28 下午 org.hibernate.Version logVersion

INFO: HHH000412: Hibernate ORM core version 5.5.3.Final

七月 19, 2021 12:24:29 下午 org.hibernate.annotation网站站点" rel="nofollow" />