Java学习之Hibernate框架使用

Java学习之Hibernate框架使用0x00前言以我看来Hibernate的使用频率其实还是比较可观的,但都说Hibernate比较笨重,这里来学习一波,做个简单记录。0x01使用流程

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

Java学习之Hibernate框架使用

0x00 前言

以我看来Hibernate的使用频率其实还是比较可观的,但都说Hibernate比较笨重,这里来学习一波,做个 简单记录。

0x01 使用流程

流程

1、导⼊相关依赖
2、创建 Hibernate 配置⽂件
3、创建实体类
4、创建实体类-关系映射⽂件
5、调⽤ Hibernate API 完成操作

具体操作

<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.19</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.4.10.Final</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
</dependency>
</dependencies>
  1. 配置hibernate.cfg.xml 文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- 数据源配置 -->
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<property
name="connection.driver_class">com.mysql.cj.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/test?
useUnicode=true&amp;characterEncoding=UTF-8</property>
<!-- C3P0 -->
<property name="hibernate.c3p0.acquire_increment">10</property>
<property name="hibernate.c3p0.idle_test_period">10000</property>
<property name="hibernate.c3p0.timeout">5000</property>
<property name="hibernate.c3p0.max_size">30</property>
<property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.max_statements">10</property>
<!-- 数据库⽅⾔ -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- 打印SQL -->
<property name="show_sql">true</property>
<!-- 格式化SQL -->
<property name="format_sql">true</property>
<!-- 是否⾃动⽣成数据库 -->
<property name="hibernate.hbm2ddl.auto"></property>
</session-factory>
</hibernate-configuration>

核⼼配置: session-factory
SessionFactory:针对单个数据库映射经过编译的内存镜像⽂件,将数据库转换为⼀个 Java 可以识别的
镜像⽂件。

构建 SessionFactory ⾮常耗费资源,所以通常⼀个⼯程只需要创建⼀个 SessionFactory 。

  1. 创建实体类
import lombok.Data;
import java.util.Set;
@Data
public class Customer {
private Integer id;
private String name;
private Set<Orders> orders;
}
import lombok.Data;
@Data
public class Orders {
private Integer id;
private String name;
private Customer customer;
}
  1. 创建实体关系映射⽂件
import lombok.Data;
@Data
public class People {
private Integer id;
private String name;
private Double money;
}
<?xml version="1.0"?>5、实体关系映射⽂件注册到 Hibernate 的配置⽂件中。
6、使⽤ Hibernate API 完成数据操作。
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD
3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.southwind.entity.People" table="people">
<id name="id" type="java.lang.Integer">
<column name="id"></column>
<generator class="identity"></generator>
</id>
<property name="name" type="java.lang.String">
<column name="name"></column>
</property>
<property name="money" type="java.lang.Double">
<column name="money"></column>
</property>
</class>
</hibernate-mapping>
  1. 实体关系映射⽂件注册到 Hibernate 的配置⽂件中。
<mapping resource="com/nice0e3/entity/People.hbm.xml"></mapping>
  1. 使⽤ Hibernate API 完成数据操作
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class Test {
public static void main(String[] args) {
//创建Configuration
Configuration configuration = new
Configuration().configure("hibernate.xml");
//获取SessionFactory
SessionFactory sessionFactory = configuration.buildSessionFactory();
//获取Session
Session session = sessionFactory.openSession();
People people = new People();
    people.setName("张三");
people.setMoney(1000.0);
session.save(people);
session.beginTransaction().commit();
session.close();
}
}

配置到映射文件配置到src目录下会读取不到。想要读取到需要在pom.xml下进行配置。

  1. pom.xml 中需要配置 resource。
<build><resources><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes></resource></resources></build>

0x02 结尾

Hibernate并不是本次主要目的,这里用于做简单记录。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119872.html原文链接:https://javaforall.net

(0)
上一篇 2021年12月13日 上午8:00
下一篇 2021年12月13日 上午9:00


相关推荐

  • SpringCloud从入门到精通教程/SpringCloud Alibaba从入门到精通教程[通俗易懂]

    对于SpringCloud,很多小伙伴问到了我的研究学习资料来源,除官方文档外,特例完整整理一下自己的平时参考学习其他资料,以及分享实战项目源码和代码资源,供大家参考学习主要教程:SpringCloud教程SpringCloudGreenwich,基于SpringBoot2.1.7,Github源码仓库案例下载一、我的教程(2019.11更新)SpringCloud…

    2022年4月7日
    52
  • java拼接sql保留两位小数_SQL 保留两位小数的实现方式

    java拼接sql保留两位小数_SQL 保留两位小数的实现方式问题 客户要求 跟金额相关的数据 打印出来要保留两位小数 比如 13 2 13 200 要显示为 13 20 分析 首先查看数据库中的数据定义 均为 decimal 12 2 直接通过数据库查询的结果也会保留两位小数 但是代码处理后 却会忽略掉最后一个 零 位 此处有两个解决方案 一 代码中处理 检测到为金额字段 做特殊处理 二 修改查询 SQL 语句去规避此问题 第一种方法 无论通过数据类型还是字

    2026年3月18日
    2
  • 云计算仿真框架CloudSim介绍

    云计算仿真框架CloudSim介绍幻灯片1云计算仿真框架CloudSim介绍jiangzw#ihep.ac.cn(以下为本人某次报告做的调研的PPT及其它一些实践记录,为保证清晰度,一些插入的图片较大,可在新标签页中打开)(本文基于署名2.5中国大陆许可协议发布,欢迎转载、演绎,但是必须保留本文的署名John并包含本文链接。)欢迎交流2013年04月09日

    2022年10月13日
    4
  • 博弈论与多智能体强化学习「建议收藏」

    博弈论与多智能体强化学习「建议收藏」AnnNowe´,PeterVrancx,andYann-Michae¨lDeHauwereAbstract.ReinforcementLearningwasoriginallydevelopedforMarkovDecisionProcesses(MDPs).Itallowsasingleagenttolearnapolicythatma…

    2022年10月9日
    7
  • Dockerfile add_在docker中使用ubuntu

    Dockerfile add_在docker中使用ubuntu前言Dockerfile中提供了两个非常相似的命令COPY和ADD,本文尝试解释这两个命令的基本功能,以及其异同点,然后总结其各自适合的应用场景。Build上下文的概念在使用dock

    2022年8月6日
    7
  • tp框架的特性_tp5框架

    tp框架的特性_tp5框架一、结构目录》Thinkphp文件夹,是thinkPHP的核心文件,里面的内容是不允许我们修改的》Public是公有的文件夹,里面可以写自己的东西》Application我们建立项目的文件夹(Public和Application里面原有自带的文件可以删除,相当于两个空的文件夹)》tp文件夹中的index.php是所有程序的入口文件》conf->convention.php配置文件包含了所有的配置》thinkphp->conf文件夹->配置文件,几乎包括关于..

    2025年5月25日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号