Hibernate项目创建流程(IDEA版)

本节我们将演示如何搭建一个 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,可得到以下目录结构。

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

  • documentation:Hibernate 的开发文档;
  • lib:Hibernate 相关的依赖;
  • project:Hibernate 官方给出的示例工程。


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

2. 新建工程

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

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

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

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

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

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

 

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@qq.com');
INSERT INTO `user` VALUES ('2', '002', 'user', '123456', '98765432@qq.com');

4. 创建实体类

在 hibernate-demo 工程的 net.biancheng.www.po 包下,创建一个与 user 表对应的实体类 User,代码如下。

 

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.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <!-- name:类的全路径:-->
    <!-- table:表的名称:(可以省略的.使用类的名称作为表名.)-->
    <class name="net.biancheng.www.po.User" table="user" schema="bianchengbang_jdbc">
        <!-- 主键-->
        <id name="id" column="id">
            <!--主键生成策略-->
            <generator class="native"></generator>
        </id>

        <!--type:三种写法-->
        <!--Java类型 :java.lang.String-->
        <!--Hibernate类型:string-->
        <!--SQL类型 :不能直接使用type属性,需要子标签<column>-->
        <!--<column name="name" sql-type="varchar(20)"/>-->
        <property name="userId" column="user_id" type="java.lang.String"/>
        <property name="userName" column="user_name"/>
        <property name="password" column="password"/>
        <property name="email" column="email"/>
    </class>
</hibernate-mapping>

 

6. 创建 Hibernate 核心配置文件

Hibernate 框架是对 JDBC 的封装,也需要对 JDBC 连接数据库所需的 url、driver、username 和 password  等 4 个基本参数进行配置,Hibernate 一般是通过配置文件 hibernate.cfg.xml 来指定的,该文件被称为 Hibernate 的核心配置文件。

在 Hibernate 工程的 src 目录下,新建一个 hibernate.cfg.xml 文件,配置如下。

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <!--使用 Hibernate 自带的连接池配置-->
        <property name="connection.url">jdbc:mysql://localhost:3306/bianchengbang_jdbc</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">root</property>
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>

        <!--hibernate 方言-->
        <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>

        <!--打印sql语句-->
        <property name="hibernate.show_sql">true</property>
        <!--格式化sql-->
        <property name="hibernate.format_sql">true</property>

        <!-- 加载映射文件 -->
        <mapping resource="net/biancheng/www/mapping/User.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

 

7. 测试

1. 在 net.biancheng.www.test 包下,创建一个名为 MyTest 的测试类,并在该测试类中创建一个测试方法 testQuery(),使用 Hibernate 实现对数据库的查询,代码如下。

 

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);
    //提交事务
    transaction.commit();
    //释放资源
    session.close();
    sessionFactory.close();
    }
}

2. 运行测试方法 testQuery(),控制台输出如下。

七月 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.annotations.common.reflection.java.JavaReflectionManager <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {5.1.2.Final}
七月 19, 2021 12:24:30 下午 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
WARN: HHH10001002: Using Hibernate built-in connection pool (not for production use!)
七月 19, 2021 12:24:30 下午 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001005: using driver [com.mysql.jdbc.Driver] at URL [jdbc:mysql://localhost:3306/bianchengbang_jdbc]
七月 19, 2021 12:24:30 下午 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001001: Connection properties: {user=root, password=****}
七月 19, 2021 12:24:30 下午 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001003: Autocommit mode: false
七月 19, 2021 12:24:30 下午 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections <init>
INFO: HHH000115: Hibernate connection pool size: 20 (min=1)
Mon Jul 19 12:24:30 CST 2021 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
七月 19, 2021 12:24:31 下午 org.hibernate.dialect.Dialect <init>
INFO: HHH000400: Using dialect: org.hibernate.dialect.MySQL8Dialect
七月 19, 2021 12:24:32 下午 org.hibernate.engine.transaction.jta.platform.internal.JtaPlatformInitiator initiateService
INFO: HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
Hibernate:
    select
        user0_.id as id1_0_0_,
        user0_.user_id as user_id2_0_0_,
        user0_.user_name as user_nam3_0_0_,
        user0_.password as password4_0_0_,
        user0_.email as email5_0_0_
    from
        user user0_
    where
        user0_.id=?
net.biancheng.www.po.User{id=1, userId='001', userName='admin', password='admin', email='12345678@qq.com'}
七月 19, 2021 12:24:32 下午 org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PoolState stop
INFO: HHH10001008: Cleaning up connection pool [jdbc:mysql://localhost:3306/bianchengbang_jdbc]

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
标准的Web Maven项目是一种常见的项目结构和构建流程的范本,旨在提供一个规范的开发环境和工作流程,以便更高效地开发和维护Web应用程序。 首先,创建标准Web Maven项目需要遵循一些最佳实践和约定。这包括使用Maven作为项目管理和构建工具,并将项目结构划分为几个主要目录,如源代码目录(src/main/java)、资源目录(src/main/resources)、测试代码目录(src/test/java)和测试资源目录(src/test/resources)等。 其次,标准Web Maven项目还应该配置一些必要的插件和依赖项,以便简化开发和部署过程。例如,可以配置war插件将项目打包为WAR文件,并指定项目依赖的第三方库和框架,如Spring、Hibernate等。此外,还可以配置其它插件来支持自动化测试、代码质量检查和性能优化等功能。 在项目的开发过程中,可以遵循一些设计原则和模式,如MVC(Model-View-Controller)模式,来实现良好的代码组织和可扩展性。使用标准的命名规范和代码风格,可以提高代码的可读性和可维护性。同时,可以使用本控制工具,如Git,来管理和追踪项目的代码变更。 最后,为了确保项目的质量和稳定性,应该进行持续集成和自动化测试。可以配置持续集成服务器,如Jenkins,来自动构建、测试和部署项目。同时,编写单元测试和集成测试,以确保代码的正确性和功能的稳定性。 总结来说,标准Web Maven项目提供了一种规范化的开发环境和工作流程,以支持高效的Web应用程序开发和维护。通过遵循一些最佳实践和约定,并利用Maven的插件和依赖管理功能,可以减少开发人员的工作负担,提高开发效率,并确保项目的质量和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值