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)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • ubuntu入门

    Ubuntu的发音Ubuntu,源于非洲祖鲁人和科萨人的语言,发作oo-boon-too的音。了解发音是有意义的,您不是第一个为此困惑的人,当然,也不会是最后一个:)大多数的美国人读ubun

    2021年12月27日
  • java爬虫系列(一)——爬虫入门[通俗易懂]

    java爬虫系列(一)——爬虫入门[通俗易懂]爬虫框架介绍Heritrix优势劣势简单demo地址crawler4j优势劣势简单demo地址WebMagic优势劣势简单demo地址快速入门seimicrawler项目地址简单爬虫实现导入项目编写爬虫启动爬虫同系列文章爬虫框架介绍java爬虫框架非常多,比如较早的有Heritrix,轻量级的crawler4j…

    2022年7月8日
  • docker离线安装及配置tab补全_Docker安装

    docker离线安装及配置tab补全_Docker安装docker离线

    2022年9月26日
  • Pycharm IDE的配置与基本使用「建议收藏」

    Pycharm IDE的配置与基本使用「建议收藏」PycharmIDE的配置与基本使用官网地址:https://www.jetbrains.com/zh-cn/pycharm/选择指定的虚拟环境如何设置虚拟环境可参考Python的安装与配置设置快捷键eclipse模式持续补充

    2022年8月28日
  • html 二级菜单

    html 二级菜单先放效果图:首先设置菜单的基本轮廓<divid=”nav”><ul><li><ahref=”#”>一级菜单1</a></li><li><ahref=”#”>一级菜单2</a></li><li>…

    2022年4月29日
  • python里数组如何定义_Python创建数组

    python里数组如何定义_Python创建数组1、Python的数组分三种类型:(1)list普通的链表,初始化后可以通过特定方法动态增加元素。定义方式:arr=[元素](2)Tuple固定的数组,一旦定义后,其元素个数是不能再改变的。定义方式:arr=(元素)(2)Dictionary词典类型,即是Hash数组。定义方式:arr={元素k:v}2、下面具体说明这些数组的使用方法和技巧:(1)list链表数组a、…

    2022年8月13日

发表回复

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

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