Hibernate基本使用

news2025/1/14 1:04:18

注:本文使用maven创建项目。

目录:

  • Hibernate简介:
  • Hibernate使用:
  • 一、手动创建:
    • 1.建表:
    • 2.pom.xml中导入相关依赖:
    • 3.创建Hibernate核心配置文件hibernate.cfg.xml:
    • 4.创建实体类UserEntity.java:
    • 5.创建实体类-关系映射文件UserEntity.hbm.xml:
    • 6.调用Hibernate API完成操作:
    • 7.效果:
    • 8.项目结构:
  • 二、自动部署:
    • 1.建表。
    • 2.pom.xml中导入相关依赖:
    • 3.添加框架支持。
    • 4.添加数据库可视化。
    • 5.自动生成实体类及实体类映射文件。
    • 6.配置Hibernate核心配置文件。
    • 7.调用Hibernate API完成操作。
    • 8.项目结构:

Hibernate简介:

Hibernate是一个ORM框架,可以将对数据库的操作转换为对实体类Class的操作,使用Hibernate后,用户可以通过操作实体类Class操作数据库的表。

Hibernate使用:

一、手动创建:

1.建表:

在这里插入图片描述

2.pom.xml中导入相关依赖:

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.example</groupId>
  <artifactId>t00</artifactId>
  <version>1.0-SNAPSHOT</version>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>
  <!--导入相关依赖-->
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <!--JDBC java连接mysql依赖-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.26</version>
    </dependency>
    <!--hibernate依赖-->
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-core</artifactId>
      <version>5.6.10.Final</version>
    </dependency>
  </dependencies>

  <!--添加资源文件的指定-->
  <build>
    <resources>
      <!--src/main/java下的xml和properties文件在编译时都会被加到编译目录下-->
      <resource>
        <directory>src/main/java</directory>
        <includes>
          <include>**/*.xml</include>
          <include>**/*.properties</include>
        </includes>
      </resource>
      <!--src/main/resources下的xml和properties文件在编译时都会被加到编译目录下-->
      <resource>
        <directory>src/main/resources</directory>
        <includes>
          <include>**/*.xml</include>
          <include>**/*.properties</include>
        </includes>
      </resource>
    </resources>
  </build>
</project>

3.创建Hibernate核心配置文件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>
        <!--数据源配置-->
        <property name="connection.url">jdbc:mysql://localhost:3306/javawebcourse</property>
        <property name="connection.driver_class">com.mysql.cj.jdbc.Driver</property>
        <property name="connection.username">Cailinhao</property>
        <property name="connection.password">CAIlinhao11014359</property>
        <!--打印SQL语句-->
        <property name="show_sql">true</property>
        <!--格式化SQL语句-->
        <property name="format_sql">true</property>
        <!--数据库方言,方便根据不同方言自动生成SQL语句-->
        <property name="dialect">org.hibernate.dialect.MySQL8Dialect</property>
        <!--没有表时是否自动生成在数据库生成表-->
        <property name="hibernate.hbm2ddl.auto">update</property>
        <!--数据库连接池,这里使用C3P0-->
        <!--连接数量不够时每次自增的个数-->
        <property name="hibernate.c3p0.acquire_increment">10</property>
        <!--设置连接失效时间-->
        <property name="c3p0.idle_test_period">10000</property>
        <!--设置连接超时时间-->
        <property name="c3p0.timeout">5000</property>
        <!--设置最大连接数-->
        <property name="c3p0.max_size">30</property>
        <!--设置最小连接数-->
        <property name="c3p0.min_size">5</property>
        <!--设置statement最大线程数-->
        <property name="hibernate.c3p0.max_statements">10</property>
        <!--注册实体类和xml映射文件-->
        <mapping class="org.example.Entity.UserEntity"/>
        <mapping resource="org/example/Entity/UserEntity.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

4.创建实体类UserEntity.java:

package org.example.Entity;

public class UserEntity {
	//属性要与表的字段名对应
    private String userid;
    private String username;
    private String password;

	//每个属性要有get、set方法
    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;
    }
    
}

5.创建实体类-关系映射文件UserEntity.hbm.xml:

用于将实体类UserEntity的各个属性和数据库表user的各个字段对应起来。

<?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="org.example.Entity.UserEntity" table="user" schema="javawebcourse">
        <!--主键用id,其他属性用property-->
        <!--表的字段名与实体类名匹配-->
        <id name="userid" column="userid"/>
        <property name="username" column="username"/>
        <property name="password" column="password"/>
    </class>
</hibernate-mapping>

6.调用Hibernate API完成操作:

package org.example;

import org.example.Entity.UserEntity;
import org.example.Util.HibernateUtil;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;

public class AppTest{
    @Test
    public void test(){
        //创建SessionFactory,从根路径下获取核心配置文件
        SessionFactory factory = new Configuration().configure("hibernate.cfg.xml").buildSessionFactory();
        //创建session
        Session session = factory.openSession();
        //创建事务
        Transaction transaction = session.beginTransaction();
        //创建实体类对象并给相应属性赋值
        UserEntity user = new UserEntity();
        user.setUserid("004");
        user.setUsername("zhangsan");
        user.setPassword("123456");
        //保存
        session.save(user);
        //提交事务
        transaction.commit();
        //关闭SessionFactory
        factory.close();
    }
}

7.效果:

在这里插入图片描述

8.项目结构:

在这里插入图片描述

二、自动部署:

自动部署省去了创建实体类和实体关系映射文件的步骤,我们只需要编写核心配置文件即可。

1.建表。

具体表结构同上。

2.pom.xml中导入相关依赖:

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.example</groupId>
  <artifactId>t00</artifactId>
  <version>1.0-SNAPSHOT</version>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>
  <!--导入相关依赖-->
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    <!--JDBC java连接mysql依赖-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.26</version>
    </dependency>
    <!--hibernate依赖-->
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-core</artifactId>
      <version>5.6.10.Final</version>
    </dependency>
  </dependencies>

  <!--添加资源文件的指定-->
  <build>
    <resources>
      <!--src/main/java下的xml和properties文件在编译时都会被加到编译目录下-->
      <resource>
        <directory>src/main/java</directory>
        <includes>
          <include>**/*.xml</include>
          <include>**/*.properties</include>
        </includes>
      </resource>
      <!--src/main/resources下的xml和properties文件在编译时都会被加到编译目录下-->
      <resource>
        <directory>src/main/resources</directory>
        <includes>
          <include>**/*.xml</include>
          <include>**/*.properties</include>
        </includes>
      </resource>
    </resources>
  </build>
</project>

3.添加框架支持。

右键module,点击Add Framework Support,添加Hibernate依赖。
在这里插入图片描述

4.添加数据库可视化。

点击查看IDEA添加数据库可视化的方法。

5.自动生成实体类及实体类映射文件。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.配置Hibernate核心配置文件。

具体内容同上。

7.调用Hibernate API完成操作。

具体内容同上。

8.项目结构:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/24387.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ubuntu系统、CentOS系统双网卡的配置

虚机双网卡配置前言一、CentOS系统1.配置网卡信息1.1编辑eth0网卡1.2查看eth0网卡信息1.3编辑eth1网卡1.4查看eth1网卡信息2.关闭网卡arp代答和rp_filter校验2.1编辑配置文件2.2查看配置文件3.重启网络服务4.配置路由4.1 配置路由4.2 查看路由二、Ubuntu系统1.配置网卡信息1.1.…

微信小程序运行机制和生命周期

一. 运行机制 首先了解下小程序的运行机制&#xff0c;小程序从启动到最终被销毁&#xff0c;会经历很多不同的状态&#xff0c;小程序在不同状态下会有不同的表现。大致运行机制如下图。 小程序生命周期图 接下来我们是图中概念讲解&#xff0c;项目中也会经常遇到。 1&…

etf动量轮动+大盘择时:年化30%的策略

原创文章第111篇&#xff0c;专注“个人成长与财富自由、世界运作的逻辑&#xff0c; AI量化投资”。 今天重点来探索一下elegantRL。 昨天的文章金融强化学习与finRL开发包里介绍了finRL的源码结构&#xff0c;背后的强化学习框架是elegantRL。 聚宽平台上有一个“动量轮动…

Java#18(面向对象三大特征之一:继承)

目录 一.继承 1.Java中提供了关键字extends,可以让一个类和另一个类建立起继承关系 2.继承的好处 3.什么时候使用继承? 二.继承的特点 java只支持单继承,不支持多继承,但支持多层继承 三.子类到底能继承父类中的哪些内容? 四.继承中成员变量和成员方法的访问特点 1. 继…

Apache Jmeter压力测试与性能监控,监测cpu、内存、磁盘、网络

1.官网下载Jmeter 解压&#xff0c;bin目录下 Windows 运行jmeter.bat 、Linux运行jmeter.sh 2.jmeter-plugins-manager 插件 测试机下载放置Jmeter的apache-jmeter-5.5\lib\ext 目录下,重新jmeter。 3.ServerAgent-2.2.3.zip下载 下载好放服务器端&#xff0c;给可执行文…

FPGA精简版UDP协议实现板间网线传输视频,提供3套工程源码

目录1.FPGA精简版UDP介绍2.网线板间视频传输---精简版UDP再次精简3.网线板间视频传输---实现方案4.网线板间视频传输---发送端方案5.网线板间视频传输---接收端方案6.工程1介绍---Artix7(RTL8211)双网口环回7.工程2介绍---Artix7发送--->Kintex7(B50610)接收8.工程3介绍---K…

RabbitMQ的广播模式(fanout)在(基于xml配置)项目中使用

项目结构 添加相关的jar包&#xff1a; pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation&qu…

@敏捷组织从业者,开放敏捷架构O-AA™标准考试及认证项目重磅上线!

数字化转型和敏捷转型需同时进行&#xff0c; O-AA™标准更强调组织和文化的转型。 认证项目 重磅发布 发布物资源 标准中文从业认证考试 标准讲师认证培训课程 ALL IN ∨ 开放敏捷架构O-AA™标准采用了基于结果、以产品为中心的方法&#xff0c;使企业能够以灵活和敏捷的…

[ros2实操]1-ros2的安装(ubuntu1804)与运行

参考链接: Recording and playing back data — ROS 2 Documentation: Galactic documentation 使用docker创建了一个ubuntu1804镜像: docker run -it --gpus all \-p 8860:8860 \-v /tmp/.X11-unix:/tmp/.X11-unix \-v /home/lbw/temp_dir:/temp_dir \-e DISPLAYunix$DISPL…

软件测试行业5年经验,薪资不如刚入行的应届生,真是日了狗了,问题究竟出在哪里?

最近公司新招了一位刚入行的应届生&#xff0c;作为组长我深刻体验到新人入行的痛楚&#xff0c;对此我十分照顾他&#xff0c;都是手把手教他公司业务流程。直到15号他工资到账15400元短信提示音响起&#xff0c;我才想起这是多么幼稚的行为&#xff0c;凭什么我在公司待了五年…

实验三 静态路由配置

计算机网络实验实验三 静态路由配置一、实验目的二、实验目的三、实验步骤3.1 连接实验拓扑结构3.2 配置路由器IP地址和掩码3.3 配置PC机IP地址、网关地址3.4 配置路由器的路由表四、思考题实验三 静态路由配置 一、实验目的 掌握手工配置路由表的方法 掌握读懂路由表的能力 …

Charles安装配置

目录 一、工作原理 二、主要功能 三、主要优点&#xff08;对比Fiddler&#xff09; 四、安装与配置 1、安装 2、组件介绍 1&#xff09;主导航栏 2&#xff09;请求栏 3&#xff09;请求数据栏 3、设置 1&#xff09;代理设置 2&#xff09;访问控制 4、客户端设置 …

(C语言)P1002 [NOIP2002 普及组] 过河卒

[NOIP2002 普及组] 过河卒 一、题目描述 棋盘上 AAA 点有一个过河卒&#xff0c;需要走到目标 BBB 点。卒行走的规则&#xff1a;可以向下、或者向右。同时在棋盘上 CCC 点有一个对方的马&#xff0c;该马所在的点和所有跳跃一步可达的点称为对方马的控制点。因此称之为“马拦…

Redis实战——短信登录

目录 1 基于Seesion实现短信登录 1.1 发送短信验证码 1.2 登录功能 2 使用Redis进行短信验证码校验登录 2.1 Seesion方法存在的问题 2.2 发送短信验证码 2.3 验证码校验及登录功能 3.拦截器优化 1 基于Seesion实现短信登录 1.1 发送短信验证码 发送验证码请求路径 /u…

2、skywalking-安装(Docker-Compose方式)

1、服务器环境介绍 两台服务器均为Centos7.6 172.16.128.129 vm1 装载skywalking(采用es作为数据库) 172.16.128.130 vm2 项目服务器&#xff0c;然后向vm1集成 2、准备工作 2.1、由于安装skywalking是通过docker-compose方式安装在vm1且项目到时候是直接build成镜像然后发布&a…

行业安全解决方案 | 零售企业如何做好安全建设对抗黑灰产?

随着各行各业信息化、数字化、智能化进程不断加快&#xff0c;零售行业新业态也正在蓬勃发展。然而&#xff0c;随着转型深入推进及业务量的上升&#xff0c;随处可见的安全威胁逐渐成为零售企业的首要难题。 其主要原因在于该类企业一般涵盖大量用户个人数据&#xff0c;当企…

2022,软件测试行业岗位细分,薪资分布

软件测试是个需求多&#xff0c;就业机会大的职业。目前&#xff0c;我国具备软件测试能力的人员数量和市场需求相差巨大&#xff0c;巨大的市场空缺&#xff0c;使软件测试工程师从初级到高级&#xff0c;只需要 1 年甚至更短的时间来完成。所以作为一名软件测试工程师&#x…

图像基础知识、深度学习基础知识以及相关问题

疑难问题总结第一部分&#xff1a;图像基础边缘和轮廓1、图像中&#xff0c;什么是高频域和低频域&#xff1f;2、什么是图像轮廓&#xff0c;什么是图像边缘&#xff1f;第二部分&#xff1a;深度学习第一部分&#xff1a;图像基础 边缘和轮廓 1、图像中&#xff0c;什么是高…

从一座瑞典风机的倒塌看VDI2230用于螺栓连接精确计算的重要性

作者&#xff1a;螺栓设计老张 一、写在前面 引言&#xff1a;在机械行业&#xff0c;螺栓是与轴承、齿轮齐名的三大最主要机械元素&#xff0c;而从应用广泛程度来看&#xff0c;相比于轴承和齿轮是有过之而无不及。无论是机械传动还是机械结构&#xff0c;都离不开螺栓&…

[附源码]Python计算机毕业设计成绩管理与学情分析系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…