Hibernate项目创建流程(IDEA版)
搭建 Hibernate 工程需要以下 7 步:
下载 Hibernate 开发包
新建工程
创建数据库表
创建实体类
创建映射文件
创建 Hibernate 核心配置文件
测试
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 目录,如下图。
图3:新建 java 项目
2. 将 required 目录中的所有 jar 包拷贝到 Hibernate 工程下的 lib 目录中,除此之外,为了与数据库进行连接,我们还需要下载 MySQL 数据库驱动程序和 junit 的 Jar 包,并将它们都拷贝到 lib 目录中,如下图。

图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 的映射文件的名规则如下:
例如,实体类 User 的映射文件就可以名为 User.hbm.xml。[实体类名].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" />